2012-04-21 21 views
9

के रूप में मुझे जेपीए 2 में एक नक्शा संग्रहीत करने में मदद की ज़रूरत है, जहां दोनों कुंजी और मान enums (Map<Enum, Enum>) हैं। मेरे जेपीए प्रदाता के रूप में हाइबरनेट के साथ यह enums को ब्लॉब के रूप में संग्रहीत करता है लेकिन मुझे तारों के रूप में संग्रहीत डेटा की आवश्यकता होती है। मैंने इस समस्या को ठीक करने के लिए निम्नलिखित टिप्पणियों का प्रयास किया:स्टोर मानचित्र <Enum, Enum> स्ट्रिंग

@ElementCollection(fetch = FetchType.EAGER) 
@MapKeyEnumerated(value = EnumType.STRING) 
public Map<Enum, Enum> getElementsMap() { 
    return elementsMap; 
} 

लेकिन डेटा अभी भी डीबी में ब्लॉब के रूप में संग्रहीत किया जा रहा है। क्या किसी ने इस समस्या को हल किया है?

+2

मानचित्र सहेजा जा रहा है के रूप में एक स्ट्रिंग नहीं करता ' टी बिल्कुल समझदार नहीं है। क्या आपने डेटा सामान्यीकरण के बारे में सुना है? –

+0

क्षमा करें, मैं इस सवाल को गलत तरीके से लिखता हूं, अब यह तय है, मेरा मतलब चाबियाँ और इसके मूल्य हैं। – user1289877

+0

आप दोनों कुंजी और मानों पर केवल 'toString() 'का उपयोग कर सकते हैं। समस्या क्या है? –

उत्तर

1

लगभग प्रत्येक जावा ऑब्जेक्ट में toString() method है यदि आप डेटाबेस में अपने मानचित्र का प्रतिनिधित्व करना चाहते हैं, तो मेरा सुझाव है कि यह आपका विकल्प हो।

हालांकि मुझे यह पूछना है कि क्या आप वाकई एमएपी को स्टोर करना चाहते हैं, न कि कुंजी या मूल्यों के तत्वों को स्टोर करना चाहते हैं?

+0

हां, यह कुंजी और इसके मान हैं, क्षमा करें, मैं जेपीए 2 और हाइबरनेट से शुरू कर रहा हूं, क्या आप यहां कोड में बदलाव पोस्ट कर सकते हैं जो मुझे इस कुंजी और मानों को स्ट्रिंग के रूप में स्टोर करने के लिए करना चाहिए? – user1289877

3

@ अनुमानित मूल्य का मूल्य निर्धारित करने के लिए उपयोग किया जाता है। मेज पर नक्शे जहां दोनों कुंजी और मान के लिए स्तंभ varchars और enum के नाम सहेज लिया जाएगा रहे हैं के बाद:

@Enumerated(EnumType.STRING) 
@ElementCollection(fetch = FetchType.EAGER) 
@MapKeyEnumerated(value = EnumType.STRING) 
public Map<MyEnum, MyOtherEnum> elementsMap = new HashMap<>(); 

यह मोटे तौर पर तालिका में निम्नलिखित का उत्पादन करेगा:

[NAME_OF_ENTITY]_ELEMENTSMAP (
    NAME_OF_ENTITY_ID INTEGER, 
    ELEMENTSMAP VARCHAR(255), 
    ELEMENTSMAP_KEY VARCHAR(255) 
) 
+0

आपकी पोस्ट के लिए धन्यवाद, मैंने कोशिश की, लेकिन मेरी मदद नहीं की। मैं postgresql डीबी और हाइबरनेट का उपयोग तालिका में int8, bytea, bytea डेटा प्रकारों का उपयोग करता हूं। – user1289877

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