2012-04-30 20 views
6

मेरे पास कुछ तार्किक रूप से हटाए गए रिकॉर्ड (यानी active=false) हैं जो मेरे @ManyToOne मैपिंग के साथ समस्याएं पैदा कर रहे हैं क्योंकि एक से अधिक परिणाम कॉलम कॉलम द्वारा वापस किए जा रहे हैं।कई टीओओएन जहां क्लॉज

मैं केवल रिकॉर्ड जहां active=true जो मैंने सोचा कि मैं प्राप्त कर सकते थे शामिल करने की ज़रूरत द्वारा:

@ManyToOne 
@NotFound(action = NotFoundAction.IGNORE) 
@JoinColumn(name = "site_id", referencedColumnName = "site_id", insertable = false, updatable = false) 
@WhereJoinTable(clause = "active=true") 
private Site site; 

हालांकि, यह WhereJoinTable हाइबरनेट (? शायद अपने ही मान्य OneToMany के लिए) के बाद से द्वारा इस्तेमाल नहीं किया जा रहा है की तरह लगता है active=true जेनरेट किए गए SQL (लॉग) में दिखाई नहीं देता है और समस्या बनी रहती है।

क्या ManyToOne और कैसे शामिल होने के लिए एक खंड शामिल करना संभव है?

उत्तर

2

@WhereJoinTable @ManyToOne के साथ समर्थित नहीं है। पांच साल से विषय के बारे में बग HHH-4335 है। बग रिपोर्ट में उल्लिखित दृश्य (केवल पढ़ने के लिए पहुंच के मामले में) का उपयोग करने के अलावा, मुझे किसी भी कामकाज के बारे में पता नहीं है।

+0

यानी तो मैं एक ही 'ActiveSite' इकाई को पढ़ लिया है यह, एक ही तालिका फिर से नक्शा और मानचित्रण पर एक फिल्टर डाल करने के लिए संभव है? – pstanton

+0

हाँ, आप यह कर सकते हैं। लेकिन सक्रिय साइट और साइट के उदाहरणों के बीच अपेक्षित कनेक्शन के रूप में तब हाइबरनेट के लिए अज्ञात है। इसलिए संबंधित साइट पर किए गए परिवर्तन केवल सक्रियसाइट पर प्रतिबिंबित होते हैं जब इसे डेटाबेस से पढ़ा जाता है (या ताज़ा किया जाता है)। –

+0

हाँ, जो इस मामले में स्वीकार्य होगा, हालांकि मैं अपने '@ एंटिटी' पर '@Where (clause = "active = true")' का उपयोग करने की कोशिश कर रहा हूं और हाइबरनेट इसे 'site0_.active = site0_ में परिवर्तित कर रहा है। सच '.. अगर आप मुझे इसे हल करने में मदद कर सकते हैं तो मैं आपको टिक दूंगा (क्योंकि आप अपने उत्तर में सही हैं ..) मदद के लिए धन्यवाद! – pstanton

1

@JoinColumnOrFormula एनोटेशन एक उपयुक्त वैकल्पिक हल

+0

यह प्रश्न का उत्तर नहीं है, कृपया चर्चाओं के लिए टिप्पणियों का उपयोग करें और उत्तर-उत्तर-संबंधित पोस्ट – Moseleyi

संबंधित मुद्दे