2012-04-26 28 views
5

Điều thú vị là trong thực thể:dữ liệu lỗi cắt ngắn - Dữ liệu quá dài cho cột

public static final int maxContentSize = 2097152; //2Mb 
@Lob 
@Column(length=maxContentSize) 
private byte[] content; 
@Column(length = 100) 
private String mimetype; 
@Column(length = 50) 
private String fileName; 

Tuy nhiên, một số tác phẩm (65-70k size) được chèn vào OK, nhưng hầu hết trong số họ nhận được lỗi:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'CONTENT' at row 1 

Tôi đã kiểm tra, trước khi tạo đối tượng, kích thước chính xác.

+1

Và định nghĩa giản đồ cho bảng đó là những gì? Tôi không có nghĩa là những chú thích JPA này là gì ... nó thực sự là gì? – DataNucleus

Trả lời

7

Theo tài liệu JPA "độ dài" chỉ được sử dụng cho thuộc tính Chuỗi.

(Optional) The column length. (Applies only if a string-valued column is used.)

Nếu bạn đang tự động tạo ra DDL của bạn sử dụng một công cụ .. bạn có thể sử dụng "ColumnDefinition" thuộc tính

@Column(columnDefinition = "LONGBLOB") 
private byte[] content; 
+1

Chà. Nó dựa trên câu trả lời này: http://stackoverflow.com/questions/3503841/jpa-mysql-blob-returns-data-too-long/3507664#3507664 nhưng thực sự nó là một cột blob, các tệp đang hoạt động là <65536 byte ... – csaadaam

+0

ngay bây giờ nó được tạo tự động, nhưng tôi vừa biết rằng chúng ta sẽ sử dụng oracle db và chúng ta sẽ có các định nghĩa lược đồ được viết. vì vậy ngay bây giờ tôi sẽ chỉ thay đổi cột thành thực sự là trung bình/longblob – csaadaam

Các vấn đề liên quan