Tengo un EntityBean simple con una anotación @Lob
. Si elimino esta anotación, no obtengo errores en JBossAS 6.0.0.Final y MySQL5. Pero si lo anoto con @Lob
(porque mt
contiene entre 100 y 5000 caracteres en mi caso) obtengo errores en mi entorno de prueba si persisto a la entidad.JBoss6 JPA: entidad con resultados @Lob en GenericJDBCException
- sin
@Lob
:mt
se asigna a VARCHAR - con
@Lob
:mt
se asigna a LONGTEXT (esto es lo que quiero, pero tengo errores)
Esta mi entidad:
@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
El error está aquí:
...
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
...
Realmente no sé por qué obtengo este error (reproducible). El entorno parece estar bien, se pasan muchas otras pruebas e incluso funciona sin la anotación @Lob
.
Esta pregunta está relacionada con JPA: how do I persist a String into a database field, type MYSQL Text, donde el uso de @Lob
para JPA/MySQL es la respuesta aceptada.
Actualización 1 El error anterior es específico del sistema operativo. En una máquina W7 no tengo problemas con @Lob
, con OSX Lion siempre aparece el error. Intentaré actualizar MySQL y el controlador.
Actualización 2 La solución propuesta por Kimi con @Column(columnDefinition = "longtext")
funciona bien, incluso en OSX. En ambos casos, MySQL crea la misma columna: LONGTEXT.
Actualización 3 Actualicé MySQL a mysql-5.5.17-osx10.6-x86_64
y el conector a mysql-connector-java-5.1.18
. Todavía el mismo error.
¿Cómo es tu tabla de descripción de como? Si mt es varchar en su base de datos, ¿por qué querría tratar de asignarlo a un Lob? –
¿Soporta MySQL5 LONGTEXT como valor correcto para crear un identificador? No estoy seguro de cómo debería hacer eso DB ... ¿incrementar el valor del texto? –
@PedroKowalski mt no se utiliza como identificador. El campo de identificación es. Así es como lo leí al principio, pero es solo un formato pobre del código. –