2012-04-26 30 views
5

Lo interesante es que en la entidad:error de truncamiento de datos - Los datos demasiado largo para la columna

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; 

Sin embargo, algunos archivos (65-70k tamaño) se insertan bien, pero la mayoría de ellos sale el error:

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

He comprobado, antes de crear las entidades, los tamaños son correctos.

+1

y cuál es la definición de esquema para esa tabla? No me refiero a cuáles son estas anotaciones JPA ... ¿qué es en realidad? – DataNucleus

Respuesta

7

De acuerdo con JPA doc "length" solo se utiliza para las propiedades de cadena.

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

Si va a generar automáticamente su DDL utilizando una herramienta .. puede utilizar "ColumnDefinition" atributo

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

Wow. Se basó en esta respuesta: http://stackoverflow.com/questions/3503841/jpa-mysql-blob-returns-data-too-long/3507664#3507664 pero en realidad es una columna blob, los archivos de trabajo son <65536 bytes ... – csaadaam

+0

ahora mismo se genera automáticamente, pero acabo de saber que utilizaremos Oracle DB y tendremos las definiciones de esquema escritas. así que ahora solo voy a alterar la columna para ser realmente medio/largo – csaadaam

Cuestiones relacionadas