ऑब्जेक्ट जेएसओएन के रूप में जारी रहा

मेरे पास निम्नलिखित इकाई है

@Entity
public class MyEntity {
    @Lob @Convert(converter = JsonAttributeConverter.class)
private Object data;
}

I want this persisted as a string not binary array. If I put the annotation @Column(name="data", columnDefinition="mediumtext NOT NULL") (I'm using MySQL), then when trying to persist I get the error Caused by: java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05t\x07...' for column 'data' at row 1

समस्या यह है कि डेटा न्यूक्लियस इसे सीएलओबी के बजाय बीएलओबी के रूप में जारी रखने की कोशिश करता है।

क्या यहां कोई कामकाज है? (@PrePersist विधि और एक अतिरिक्त फ़ील्ड का उपयोग करने के अलावा)

मैं org.datanucleus का उपयोग कर रहा हूं: डेटान्यूक्लियस-एक्सेसप्लेटफार्म-जेपीए-rdbms: 3.3.2।

0
आपको अतिरिक्त कोड के साथ pre-persist का विचार क्यों पसंद नहीं है?
जोड़ा लेखक Andrei I, स्रोत
ठीक है, लेकिन आप पहले से ही ऐसी समस्या बना चुके हैं, जिसमें आप डेटा न्यूक्लियस (@ कनवर्टर) एनोटेशन पर निर्भर करते हैं।
जोड़ा लेखक Andrei I, स्रोत
जेसनएट्रिब्यूट कनवर्टर कहां से है? यदि आप इसे घुमाते हैं, तो क्या आप इसके लिए कोड प्रदान कर सकते हैं?
जोड़ा लेखक Andrei I, स्रोत
अगर उस टिप्पणी को अनदेखा कर दिया जाएगा, तो आपको रनटाइम पर अपवाद मिलेगा, जो आईएमएचओ खराब है कि तैनाती पर :)
जोड़ा लेखक Andrei I, स्रोत
@DataNucleus संभवतः ऐसा (हालांकि स्पष्ट रूप से यह नहीं है)। यदि वह कनवर्टर क्लास JsonAttributeConverter.class (एनोटेशन नहीं) नहीं मिलेगा या JSON लाइब्रेरी का संदर्भ नहीं होगा, तो उस एप्लिकेशन का एक हिस्सा होगा जो अपवादों को फेंक देगा, क्योंकि कोई ऑब्जेक्ट सक्षम नहीं होगा स्ट्रिंग कॉलम में बने रहें। मेरा मतलब है कि इकाई श्रोता का उपयोग करने का प्रभाव इस एनोटेशन का उपयोग करने जैसा ही है (लेकिन निश्चित रूप से यह एक आर्किटेक्चर समस्या है और निर्भरता समस्या नहीं है)।
जोड़ा लेखक Andrei I, स्रोत
क्या आपका मतलब संकलित कोड से एनोटेशन हटाएं? यदि आप वास्तव में संकलन समय पर मतलब रखते हैं, तो क्या आप मुझे इसके बारे में अधिक पढ़ने के लिए कुछ संदर्भ दे सकते हैं?
जोड़ा लेखक Andrei I, स्रोत
@AndreiI क्योंकि मॉडल JSON लाइब्रेरी पर निर्भर करेगा, जो मेरी राय में, एक अच्छी डिजाइन पसंद नहीं है।
जोड़ा लेखक Adrian Ber, स्रोत
@DataNucleus नहीं, लेकिन मैं आपको परिणाम बता दूंगा।
जोड़ा लेखक Adrian Ber, स्रोत
हाँ, लेकिन यह एनोटेशन में है, वर्ग नहीं। टिप्पणियां अनदेखा की जा सकती हैं, सदस्य नहीं :)।
जोड़ा लेखक Adrian Ber, स्रोत
आप संकलन समय पर एक एनोटेशन को त्याग सकते हैं, मान लीजिए कि आप किसी अन्य एप्लिकेशन में डोमेन मॉडल का उपयोग करना चाहते हैं।
जोड़ा लेखक Adrian Ber, स्रोत
DataNucleus एक्सटेंशन @JdbcType का उपयोग करने का प्रयास किया? datanucleus.org/products/accessplatform/jpa/…
जोड़ा लेखक DataNucleus, स्रोत
@ एंड्रेई, संभवतः जेसनएट्रिब्यूट कनवर्टर एक जेपीए 2.1 विशेषता कनवर्टर है (जैसे कनवर्ट एनोटेशन है), इसलिए जेपीए मानक।
जोड़ा लेखक DataNucleus, स्रोत