मैं इकाईहाइबरनेट मानदंड क्वेरी?
@Entity
@Table(name = "rule")
public class Rule implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "rule_id")
private Long id;
@ElementCollection(targetClass = Action.class)
@CollectionTable(name = "rule_action", joinColumns = @JoinColumn(name = "rule_id"))
@Enumerated(value = EnumType.STRING)
@Column(name = "action")
private Set<Action> actions;
//After editing as per jbrookover's suggestion adding a new mapping
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "rule_id")
private Set<RuleAction> ruleActions;
}
के बाद निम्नलिखित है मेरी लड़ाई
public enum Action {
PHONE, EMAIL, POSTAL,PHONE_OR_EMAIL, SMS;
}
है मैं नियम कार्यों का विशेष सेट होने का एक सूची लाने के लिए मैं कोशिश कर रहा हूँ चाहते हैं तो इस
DetachedCriteria criteria = DetachedCriteria.forClass(Rule.class,"rule");
criteria = criteria.createAlias("rule.actions", "action");
criteria.add(Restrictions.in("action.name",actionSet));
return getHibernateTemplate().findByCriteria(criteria);
लेकिन org.hibernate.MappingException प्राप्त करना: संग्रह एक एसोसिएशन नहीं था: अपवाद ..
संपादित तो jbrookover मैं RuleAction के रूप में नामित कार्रवाई के लिए एक आवरण वर्ग के लिए जा रहा कोशिश से मार्गदर्शन के बाद और oneToMany संबंध eshtablish करने में सक्षम था, इसके अलावा, मैं क्वेरी संशोधित रूप में
Set<Action> act = new HashSet<Action>();
act.add(Action.EMAIL);
act.add(Action.POSTAL);
DetachedCriteria criteria = DetachedCriteria.forClass(Rule.class);
criteria.add(Restrictions.eq(SUPPORT_LANG, Language.valueOf("EN")))
.createCriteria("ruleActions").add(Restrictions.in("action",act));
return getHibernateTemplate().findByCriteria(criteria);
इस प्रकार है लेकिन यह मुझे उन सभी नियमों को वापस कर रहा है जिनमें ईमेल या पोस्टस्टल है लेकिन मैं जो चाहता हूं वह है, जिसमें सभी नियम EMAIL और POSTAL दोनों हैं कृपया क्वेरी को संशोधित करने में मेरी सहायता करें।
हाय jbrookover .. धन्यवाद !! आपके सुझाव के अनुसार मैं रैपर क्लास के माध्यम से आगे बढ़ने की कोशिश कर रहा हूं। और जो कुछ भी मैं कर रहा हूं उसके अनुसार आपका उत्तर संशोधित कर दिया है। इसलिए यह अन्य समस्याओं की सहायता कर सकता है जो एक ही समस्या का सामना कर सकते हैं –
@ अनुपम गुप्ता प्रतिबंधित क्वेरी को शामिल करने के लिए अपडेट किया गया। – jbrookover
धन्यवाद @ jbrookover अब तक मैंने एचक्ल का उपयोग किया..और आपके समाधान का उपयोग करने के लिए काफी कब्जा कर लिया गया है जल्द ही इसे आपके सुझाव के अनुसार बदल देगा और एसओ में भी अपडेट होगा, ताकि यह दूसरों के लिए उपयोगी हो सके –