Terima kasih kepada non sequitor atas semua bantuannya. Saya memiliki pekerjaan ini dan gambar saya akan meletakkan semua bagian di sini untuk referensi di masa mendatang. Terlepas dari semua klaim tentang memutakhirkan driver dan semuanya akan berfungsi, tidak ada yang berhasil untuk saya. Pada akhirnya saya harus mengimplementasikan 'org.hibernate.usertype.UserType' yang saya beri nama sama seperti semua contoh di web StringClobType. Simpan untuk beberapa impor saya menggunakan contoh dari Menggunakan Gumpalan/Blob dengan Oracle dan Hibernate. Sejauh yang saya ketahui, abaikan klaim "hati-hati".
Ada satu perubahan yang harus saya lakukan agar penggabungan berfungsi. Beberapa metode tidak diterapkan dalam contoh kode yang disediakan. Eclipse memperbaikinya untuk saya dengan mematikannya. Keren, tetapi metode ganti harus benar-benar diterapkan atau semua penggabungan akan menimpa data dengan nol. Inilah implementasi saya:
public Object replace(Object newValue, Object existingValue, Object arg2)throws HibernateException {
return newValue;
}
Saya tidak akan menduplikasi implementasi kelas di sini, buka tautan di atas untuk melihatnya. Saya menggunakan kode di kotak abu-abu ketiga. Kemudian di bagian atas kelas pojo saya ingin menggunakannya, saya menambahkan yang berikut setelah impor
...
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 {
...
}
Kemudian untuk menggunakan UserType baru, saya menambahkan anotasi ke pengambil saya:
@Type(type="clob")
@Column(name="COMMENT_DOC")
public String getDocument(){
return get("Document");
}
Saya tidak memerlukan anotasi @Lob.
Dalam ketekunan.xml saya, deklarasi unit kegigihan berakhir seperti:
<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 tidak pernah bekerja untuk saya dan tidak diperlukan untuk implementasi akhir ini.
Pelajaran saya adalah pada akhirnya mungkin lebih baik bergabung daripada bertarung. Itu akan menyelamatkan saya tiga hari.