Cảm ơn không trình tự cho tất cả sự giúp đỡ. Tôi có hình này đang hoạt động và tôi sẽ đặt tất cả các phần ở đây để tham khảo trong tương lai. Bất kể tất cả các tuyên bố về việc nâng cấp trình điều khiển và mọi thứ sẽ hoạt động, nhưng điều đó không phù hợp với tôi. Cuối cùng, tôi phải triển khai 'org.hibernate.usertype.UserType'. Tôi đặt tên nó giống với tất cả các ví dụ trên web StringClobType. Lưu cho một số nhập Tôi đã sử dụng ví dụ từ Sử dụng Clobs / Blobs với Oracle và Hibernate. Theo như tôi có liên quan, hãy bỏ qua yêu cầu "hãy cẩn thận".
Có một sự thay đổi mà tôi phải thực hiện để hợp nhất hoạt động. Một số phương pháp không được triển khai trong mẫu mã được cung cấp. Eclipse đã sửa nó cho tôi bằng cách loại bỏ chúng. Tuyệt, nhưng phương pháp thay thế cần phải được thực hiện thực sự hoặc tất cả các hợp nhất sẽ ghi đè dữ liệu bằng giá trị rỗng. Đây là cách triển khai của tôi:
public Object replace(Object newValue, Object existingValue, Object arg2)throws HibernateException {
return newValue;
}
Tôi sẽ không trùng lặp việc triển khai lớp ở đây, hãy truy cập vào liên kết trên để xem nó. Tôi đã sử dụng mã trong hộp màu xám thứ ba. Sau đó, ở đầu lớp pojo mà tôi muốn sử dụng nó trong đó, tôi đã thêm phần sau vào sau khi nhập
...
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 {
...
}
Sau đó, để sử dụng UserType mới, tôi đã thêm chú thích vào getter của mình:
@Type(type="clob")
@Column(name="COMMENT_DOC")
public String getDocument(){
return get("Document");
}
Tôi không cần chú thích @Lob.
Trong Persence.xml của tôi, khai báo đơn vị kiên trì đã kết thúc trông giống như sau:
<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 chưa bao giờ phù hợp với tôi và không cần thiết cho việc triển khai cuối cùng này.
Bài học rút ra của tôi là cuối cùng có lẽ tốt hơn là nên tham gia sau đó để chiến đấu. Nó sẽ cứu tôi ba ngày.