Проблема с сохранением длинных строк в Hibernate - PullRequest
7 голосов
/ 21 января 2010

В моем веб-приложении у меня есть текстовая область, чье пользовательское содержимое в конечном итоге сохраняется в БД с Hibernate. Я столкнулся с проблемой, что, когда пользовательский ввод превышает определенную длину, постоянство не удается. Есть ли способ указать через аннотации Hibernate или в конфигурации, что это конкретное поле должно поддерживать более длинные строки и что тип столбца базы данных должен отражать это?

Вот исключение, которое я получаю:

Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column 'introText' at row 1
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2007)
    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1443)
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
    ... 41 more

Ответы [ 3 ]

21 голосов
/ 22 января 2010

Вы можете использовать параметр длины в аннотации, например так:

@Column(length=1000)

или вы можете изменить тип столбца на что-то вроде текста, если ваша база данных поддерживает его, например:

@Column(columnDefinition="text")

Если вы используете обновление hbm2ddl, и будет создан столбец для использования этого типа (специфично для базы данных).

5 голосов
/ 05 июля 2013

У меня была похожая проблема, которую я решил, присвоив свойству «текстовый» тип hibernate:

@Type(type="text")
0 голосов
/ 25 января 2010

хорошо, это ошибка БД.

Data too long for column 'introText'

проверьте столбец introText в вашей БД, и он, вероятно, имеет ограниченный размер varchar Вам нужно будет изменить тип хранилища на что-то большее, чтобы оно не обрезало ваш текст.

Если вы считаете, что это не так, вам придется показать свое отображение и схему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...