2011-01-07 16 views
5

के बाद चयन करें मेरे पास एक मैप की गई इकाई है जिसमें एक enum संपत्ति है। लॉग फ़ाइल पर लॉक करके, जब भी मैं ऐसी इकाई पर एक चुनिंदा कथन चलाता हूं, तो परिणाम तुरंत अद्यतन होता है। उदाहरण के लिए अगर मेरे परिणाम सेट 100 रिकॉर्ड में शामिल है, तो मेरे पास है: यदि मैं अद्यतन = false समस्या गायब हो जाते हैं के रूप में संपत्ति को चिह्नितहाइबरनेट में एनम का उपयोग करने के कारण अपडेट स्टेटमेंट

[INFO org... select...] 
[INFO org... update... where id=?] 
[INFO org... update... where id=?] 

.... 100 बार

दोहराया। enum को एक enum कनवर्टर वर्ग trough सौंपा गया है, जिसे मैंने एक प्रसिद्ध पुस्तक से कॉपी किया था। तो मुझे नहीं पता कि मैं सिर्फ कोड कॉपी और पेस्ट करता हूं या नहीं। यहां एचबीएम फ़ाइल पर घोषित किया गया है।

<typedef class="mypackage.HbnEnumConverter" name="the_type"> 
    <param name="enumClassname">mypackage.TheType</param> 
</typedef> 

क्या आप इसकी जांच करने के लिए एक दिशा बता सकते हैं? इसके अलावा, हाइबरनेट क्षेत्र पर अद्यतन = झूठी होने के क्या परिणाम हैं?

धन्यवाद

+0

जहां तक ​​मैं समझता हूं, "जाने-माने पुस्तक" में यूटर्टीप के हाउसकीपिंग विधियों को याद किया जाता है, क्या आप वाकई उन्हें सही तरीके से लागू करते हैं (विशेष रूप से 'बराबर (ऑब्जेक्ट, ऑब्जेक्ट)')? – axtavt

उत्तर

2

हाइबरनेट अगर आपके वस्तु के रूप में गंदा चिह्नित एक अद्यतन उत्पन्न होगा।

यह देखने के लिए लॉग देखें कि हाइबरनेट आपके ऑब्जेक्ट को गंदे के रूप में चिह्नित करता है या नहीं।

यदि आपके पास नीचे कुछ ऐसा है।

class Entity{ 

    public YourEnum getEnum() { 
    return yourEnum==null?YourEnum.SOME_VALUE:....; 
    } 
} 

या हो सकता है आपके Enum.equals विधि में आप शायद के बराबर होती है (शून्य, नल) मामले के लिए झूठी लौट रहे हैं?

तुलनात्मक वस्तुएं समान होती हैं और गलत होती है अन्यथा हाइबरनेट का उपयोग यह तय करने के लिए होता है कि ऑब्जेक्ट गंदा है या नहीं।

+0

क्या आप मुझे बराबर (शून्य, शून्य) मुद्दे के बारे में अधिक जानकारी दे सकते हैं? – Leonardo

+0

यह एक विशेष मामला नहीं है, बस मामला जो अधिक त्रुटि प्रवण है। बराबर विधि को सही परिणाम वापस करना चाहिए ताकि ऑब्जेक्ट को गंदे ढंग से चिह्नित किया जा सके। – fmucar

+0

बराबर विधि को वापस लौटना चाहिए यदि तुलना की गई वस्तुएं समान हैं और झूठी अन्यथा हाइबरनेट का उपयोग यह तय करने के लिए करता है कि ऑब्जेक्ट गंदा है या नहीं। – fmucar

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