У меня есть простой EntityBean с аннотацией @Lob
. Если я удаляю эту аннотацию, я не получаю ошибок на JBossAS 6.0.0.Final и MySQL5. Но если я аннотирую его с помощью @Lob
(поскольку mt
содержит от 100 до 5000 символов в моем случае), я получаю ошибки в своей среде тестирования, если я сохраняю сущность.
- без
@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 Предложенный обходной путь Кими с @Column(columnDefinition = "longtext")
отлично работает, даже на OSX. В обоих случаях MySQL создает один и тот же столбец: LONGTEXT.
Обновление 3 Я обновил MySQL до mysql-5.5.17-osx10.6-x86_64
и соединитель до mysql-connector-java-5.1.18
. Все та же ошибка.