исключение данных: строковые данные, ошибка правого усечения - PullRequest
0 голосов
/ 14 апреля 2020

Я обновляю версию hibernate с 5.1.17 до 5.4.11. Я получаю эту ошибку java.sql.sqldataexception data exception: string data, right truncation; table:tablename colum: columnname.

Когда я проверяю ее в базе данных, этот столбец объявляется как VARCHAR2(4000 BYTE). Я получаю это при запуске тестового примера, в котором есть данные в файле. Если я уменьшу данные, относящиеся к этому столбцу, то он будет работать.

Это старая таблица аудита. Как и какие изменения я должен внести в этот столбец?

У нас есть собственный класс HSQLDialect, и я попытался зарегистрировать тип столбца как

registerColumnType(Types.VARCHAR, "clob/varchar2/nvarchar" );, но я получаю user lacks privilege or object not found:

Может кто-нибудь объяснить, почему происходит сбой только после обновления hibernate (он работал нормально с более ранней версией) и как это исправить?

Hibernate version: 5.4.11 HSQLDB version: 2.3.3 hibernate-search-orm: 5.11.5.Final lucene.version: 5.5.5

1 Ответ

0 голосов
/ 16 апреля 2020

Это проблема гибернации в соответствии с https://hibernate.atlassian.net/browse/HHH-13886#icft = HHH-13886

моя колонка определена как

@Column(columnDefinition = "VARCHAR(4000)") private int caseNumber;

it должно быть изменено как

@Column(length = 4000) private int caseNumber;

Это изменение требуется только для сущностей, помеченных как @Audited.

Теперь мой тестовый пример работает нормально.

см. Для получения дополнительной информации: https://hibernate.atlassian.net/secure/ReleaseNote.jspa?version=31818&styleName=Html&projectId=10031

...