У меня есть веб-приложение, использующее EclipseLink и MySQL для хранения данных.
Некоторые из этих данных являются строками, т.е. varchars в БД.
В коде сущностей строки имеют такие атрибуты:
@Column(name = "MODEL", nullable = true, length = 256)
private String model;
База данных не создается eclipseLink из кода, но длина соответствует длине varchar в БД.
Когда длина таких строковых данных больше, чем атрибут длины, возникает исключение во время вызова javax.persistence.EntityTransaction.commit ():
javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.0.v20100614-r7608): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'MODEL' at row 1
Затем транзакция откатывается.
Хотя я понимаю, что это поведение по умолчанию, это не то, что я хочу.
Я хотел бы, чтобы данные были беззвучно обрезаны, а транзакция зафиксирована.
Могу ли я сделать это, не добавляя вызов подстроки в каждый метод набора строковых данных для соответствующих объектов?