JBoss6 JPA: Entity with @Lob results in GenericJDBCException

У меня есть простой EntityBean с аннотацией @Lob. Если я удалю эту аннотацию, я не получу никаких ошибок на JBossAS 6.0.0.Final и MySQL5. Но если я аннотирую его с @Lob (потому что mt содержит от 100 до 5000 символов в моем случае), я получаю ошибки в моей тестовой среде, если я сохраняю сущность.

  • without @Lob: mt отображается на VARCHAR
  • с @Lob: mt сопоставлен с LONGTEXT (это то, что я хочу, но я получаю ошибки)

Это моя сущность:

@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

Ошибка здесь:

...
Caused by: org.hibernate.exception.GenericJDBCException: could not insert
   [my.Description]
...
Caused by: java.sql.SQLException: Connection is not associated with a managed
     connection.org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@3e4dd
...

Я действительно не знаю, почему я получаю эту (воспроизводимую) ошибку. Среда вроде бы в порядке, многие другие тесты пройдены, и он даже работает без аннотации @Lob.

Этот вопрос относится к JPA: как мне сохранить строку в поле базы данных, тип MYSQL Text, где использование @Lob для JPA/MySQL является общепринятым ответом.

Обновление 1 Ошибка выше зависит от ОС. На машине W7 у меня нет проблем с @Lob, на OSX Lion всегда ошибка. Я попробую обновить MySQL и драйвер.

Обновление 2 Предложенный Kimi обходной путь с @Column(columnDefinition = "longtext") работает отлично, даже на OSX. В обоих случаях MySQL создает один и тот же столбец: LONGTEXT.

Обновление 3 Я обновил MySQL до mysql-5.5.17-osx10.6-x86_64 и коннектор до mysql-connector-java-5.1.18. Все та же ошибка.

6
задан Community 23 May 2017 в 11:43
поделиться