tutorial programacion english ejemplo and java oracle hibernate

programacion - java and hibernate



Hibernate cultivos clob valores extrañamente (2)

Tengo una relación de uno a muchos entre dos tablas. La tabla de muchos contiene una columna de clob. La columna clob se ve así en hibernación:

@CollectionOfElements(fetch = EAGER) @JoinTable(name = NOTE_JOIN_TABLE, joinColumns = @JoinColumn(name = "note")) @Column(name = "substitution") @IndexColumn(name = "listIndex", base = 0) @Lob private List<String> substitutions;

Así que, básicamente, puedo tener una Nota con algunas subsituciones, digamos "foo" y "fizzbuzz" . Entonces en mi mesa principal podría tener una Nota con ID 4 y en mi NOTE_JOIN_TABLE Tendría dos filas, "foo" y "fizzbuzz" que tienen una relación con la Nota.

Sin embargo, cuando uno de estos se inserta en el DB, los valores de sustitución más grandes se recortan para ser tan largos como el más corto. Entonces en este caso tendría "foo" y "fiz" en el DB en lugar de "foo" y "fizzbuzz" .

¿Tienes alguna idea de por qué está sucediendo esto? He revisado y confirmado que no están siendo recortados en ningún lugar de nuestro código, definitivamente está hibernando.


La columna LOB / CLOB puede no ser lo suficientemente grande. Hibernate tiene algunos tamaños de columna predeterminados para LOB / CLOB que son relativamente pequeños (pueden depender de db). De todos modos, intente algo como esto:

@Lob @Column(length=2147483648)

Ajuste la longitud (en bytes) según sus necesidades.


Muchos controladores JDBC, versiones anteriores de Oracle en particular, tienen problemas al insertar LOB. ¿Se aseguró de que la consulta Hibernate dispara, con los mismos parámetros enlazados funciona con éxito en su controlador JDBC?