Tôi có một EntityBean đơn giản với chú thích @Lob
. Nếu tôi xóa chú giải này, tôi sẽ không gặp lỗi nào trên JBossAS 6.0.0.Final và MySQL5. Nhưng nếu tôi chú thích nó với @Lob
(vì mt
chứa khoảng 100 đến 5000 ký tự trong trường hợp của tôi) tôi gặp lỗi trong môi trường thử nghiệm của mình nếu tôi vẫn tồn tại thực thể.JBoss6 JPA: Thực thể có kết quả @Lob trong GenericJDBCException
- mà không
@Lob
:mt
được ánh xạ tới VARCHAR - với
@Lob
:mt
được ánh xạ tới LONGTEXT (đây là những gì tôi muốn, nhưng tôi nhận được lỗi)
này thực thể của tôi:
@Entity
@Table(name = "Description")
public class Description implements Serializable
{
public static final long serialVersionUID=1;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Lob
private String mt;
} // ... getter/setter
Lỗi ở đây:
...
Caused by: org.hibernate.exception.GenericJDBCException: could not insert
[my.Description]
...
Caused by: java.sql.SQLException: Connection is not associated with a managed
connec[email protected]3e4dd
...
Tôi thực sự không biết tại sao tôi gặp lỗi này (có thể tái tạo). Môi trường có vẻ ổn, nhiều thử nghiệm khác được chuyển và thậm chí nó còn hoạt động mà không có chú thích @Lob
.
Câu hỏi này có liên quan đến JPA: how do I persist a String into a database field, type MYSQL Text, trong đó việc sử dụng @Lob
cho JPA/MySQL là câu trả lời được chấp nhận.
Cập nhật 1 Lỗi ở trên là hệ điều hành cụ thể. Trên máy W7, tôi không gặp vấn đề gì với @Lob
, với OSX Lion luôn có lỗi. Tôi sẽ cố gắng cập nhật MySQL và trình điều khiển.
Cập nhật 2 Cách giải quyết được đề xuất bởi Kimi với @Column(columnDefinition = "longtext")
hoạt động tốt, ngay cả trên OSX. Trong cả hai trường hợp, MySQL tạo cùng một cột: LONGTEXT.
Cập nhật 3 Tôi đã cập nhật MySQL thành mysql-5.5.17-osx10.6-x86_64
và trình kết nối tới mysql-connector-java-5.1.18
. Vẫn là lỗi tương tự.
không bảng mô tả của bạn trông như thế nào? Nếu mt là một varchar trong cơ sở dữ liệu của bạn thì tại sao bạn muốn thử ánh xạ nó đến một Lob? –
Liệu MySQL5 có hỗ trợ LONGTEXT như một giá trị chính xác để tạo một mã định danh không? Tôi không chắc làm thế nào DB nên làm điều đó ... tăng giá trị văn bản? –
@PedroKowalski mt không được sử dụng làm mã định danh. Trường id là. Đây là cách tôi đọc nó lúc đầu nhưng nó chỉ là định dạng kém của mã. –