सभी मदद के लिए गैर अनुक्रमक के लिए धन्यवाद। मेरे पास यह काम कर रहा है और मैं भविष्य के संदर्भ के लिए सभी टुकड़ों को यहां रखूंगा। ड्राइवरों को अपग्रेड करने के सभी दावों के बावजूद और सब कुछ काम करेगा, इनमें से किसी ने भी मेरे लिए काम नहीं किया। अंत में मुझे 'org.hibernate.usertype.UserType' लागू करना पड़ा, मैंने इसे वेब StringClobType पर सभी उदाहरणों के समान नाम दिया। कुछ आयातों के लिए सहेजें मैंने ओरेकल और हाइबरनेट के साथ क्लॉब्स/ब्लॉब्स का उपयोग करने से उदाहरण का उपयोग किया। जहां तक मेरा संबंध है, "सावधान रहें" दावे की उपेक्षा करें।
विलय को काम पर लाने के लिए मुझे एक बदलाव करना पड़ा। प्रदान किए गए कोड नमूने में कुछ विधियों को लागू नहीं किया गया था। ग्रहण ने उन्हें बाहर निकालकर मेरे लिए इसे ठीक कर दिया। कूल, लेकिन प्रतिस्थापन विधि को वास्तव में लागू करने की आवश्यकता है या सभी विलय डेटा को शून्य से अधिलेखित कर देंगे। यहाँ मेरा कार्यान्वयन है:
public Object replace(Object newValue, Object existingValue, Object arg2)throws HibernateException {
return newValue;
}
मैं यहां वर्ग कार्यान्वयन की नकल नहीं करूंगा, इसे देखने के लिए उपरोक्त लिंक पर जाएं। मैंने तीसरे ग्रे बॉक्स में कोड का इस्तेमाल किया। फिर पूजो वर्ग के शीर्ष पर मैं इसका उपयोग करना चाहता था, मैंने आयात के बाद निम्नलिखित को जोड़ा
...
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDefs;
import org.hibernate.annotations.TypeDef;
@TypeDefs({
@TypeDef(
name="clob",
typeClass = foo.StringClobType.class
)
})
@Entity
@Table(name="EA_COMMENTS")
public class Comment extends SWDataObject implements JSONString, Serializable {
...
}
फिर नए यूजर टाइप का उपयोग करने के लिए मैंने अपने गेट्टर में एनोटेशन जोड़ा:
@Type(type="clob")
@Column(name="COMMENT_DOC")
public String getDocument(){
return get("Document");
}
मुझे @Lob एनोटेशन की आवश्यकता नहीं थी।
<persistence-unit name="###" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.connection.password" value="###" />
<property name="hibernate.connection.username" value="###" />
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@server.something.com:1521:###"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.default_schema" value="###" />
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9iDialect" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="100" />
<property name="hibernate.c3p0.timeout" value="300" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.idle_test period" value="3000" />
<property name="hibernate.c3p0.idle_connection_test_period" value="300" />
<property name="show_sql" value="false" />
<property name="format_sql" value="false" />
<property name="use_sql_comments" value="false" />
<property name="hibernate.jdbc.batch_size" value="0"/>
</properties>
</persistence-unit>
SetBigStringTryClob ने मेरे लिए कभी काम नहीं किया और इस अंतिम कार्यान्वयन के लिए इसकी आवश्यकता नहीं थी।
मेरा सबक सीखा है कि अंत में लड़ने के लिए शामिल होना बेहतर है। इससे मुझे तीन दिन बच जाते।