Mam prosty EntityBean z adnotacją @Lob
. Jeśli usunę tę adnotację, nie otrzymam żadnych błędów w JBossAS 6.0.0.Final i MySQL5. Ale jeśli dodam do tego komentarz z @Lob
(ponieważ w moim przypadku zawiera około 100 do 5000 znaków), otrzymam błędy w moim środowisku testowym, jeśli utrwalę encję.JBoss6 JPA: Entity with @Lob skutkuje genericJDBCException
- bez
@Lob
:mt
są odwzorowywane na VARCHAR - z
@Lob
:mt
jest odwzorowywany longtext (to jest to, co chcę, ale pojawiają się błędy)
To moja jednostka:
@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
Błąd występuje tutaj:
...
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
...
Naprawdę nie wiem, dlaczego dostaję ten (powtarzalny) błąd. Środowisko wydaje się być w porządku, wiele innych testów jest zdanych i działa nawet bez adnotacji @Lob
.
To pytanie jest związane z JPA: how do I persist a String into a database field, type MYSQL Text, gdzie przyjęto odpowiedź @Lob
dla JPA/MySQL.
Aktualizacja 1 Powyższy błąd zależy od systemu operacyjnego. Na maszynie W7 nie mam problemów z @Lob
, z OSX Lion zawsze błąd. Spróbuję zaktualizować MySQL i sterownik.
Aktualizacja 2 Proponowane obejście Kimi z @Column(columnDefinition = "longtext")
działa dobrze, nawet na OSX. W obu przypadkach MySQL tworzy tę samą kolumnę: LONGTEXT.
Aktualizacja 3 Zaktualizowałem MySQL do mysql-5.5.17-osx10.6-x86_64
oraz złącze do mysql-connector-java-5.1.18
. Wciąż ten sam błąd.
Co robi twój opis tabela wygląda? Jeśli mt jest varcharem w twojej bazie danych, to dlaczego miałbyś chcieć zmapować go na Lob? –
Czy MySQL5 obsługuje LONGTEXT jako poprawną wartość do tworzenia identyfikatora? Nie jestem pewien, jak DB powinien to zrobić ... zwiększyć wartość tekstową? –
@PedroKowalski mt nie jest używany jako identyfikator. Pole identyfikatora to. Tak to początkowo czytam, ale jest to kiepskie formatowanie kodu. –