Ho un EntityBean semplice con un'annotazione @Lob
. Se elimino questa annotazione non ottengo errori su JBossAS 6.0.0.Final e MySQL5. Ma se lo annoto con @Lob
(perché mt
contiene da 100 a 5000 caratteri nel mio caso) ottengo errori nel mio ambiente di test se continuo l'entità.JBoss6 JPA: entità con @Lob genera GenericJDBCException
- senza
@Lob
:mt
è mappato a VARCHAR - con
@Lob
:mt
è mappato a LONGTEXT (questo è quello che voglio, ma ho errori)
Questa mia entità:
@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'errore è qui:
...
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
...
Non so davvero perché ottengo questo errore (riproducibile). L'ambiente sembra essere ok, molti altri test sono passati e funziona anche senza l'annotazione @Lob
.
Questa domanda è relativa a JPA: how do I persist a String into a database field, type MYSQL Text, dove l'utilizzo di @Lob
per JPA/MySQL è la risposta accettata.
Aggiornamento 1 L'errore precedente è specifico del sistema operativo. Su una macchina W7 non ho problemi con @Lob
, con OSX Lion sempre l'errore. Cercherò di aggiornare MySQL e il driver.
Aggiornamento 2 La soluzione proposta da Kimi con @Column(columnDefinition = "longtext")
funziona correttamente, anche su OSX. In entrambi i casi, MySQL crea la stessa colonna: LONGTEXT.
Aggiornamento 3 Ho aggiornato MySQL a mysql-5.5.17-osx10.6-x86_64
e il connettore a mysql-connector-java-5.1.18
. Ancora lo stesso errore.
cosa fa il tuo tavolo descrizione assomiglia? Se mt è un varchar nel tuo database allora perché vorresti provare a mapparlo ad un Lob? –
MySQL5 supporta LONGTEXT come valore corretto per la creazione di un identificatore? Non sono sicuro di come dovrebbe fare il DB ... incrementare il valore del testo? –
@PedroKowalski mt non viene utilizzato come identificatore. Il campo ID è. Questo è come l'ho letto all'inizio, ma è solo una cattiva formattazione del codice. –