У меня есть веб-приложение, использующее 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
Затем транзакция отменяется. Хотя я понимаю, что это поведение по умолчанию, это не тот, который я хочу. Я хотел бы, чтобы данные были молча усечены, и транзакция должна быть выполнена.
Могу ли я это сделать, не добавляя вызов подстроки к каждому установленному методу строковых данных для соответствующих объектов?