Как тихо обрезать строки при их сохранении, когда они длиннее, чем указано в определении длины столбца?

У меня есть веб app, используя 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

Затем транзакция откатывается. Хотя я понимаю, что это поведение по умолчанию, это не то, что мне нужно. Я бы хотел данные, которые нужно замолчать tly усечен, и транзакция будет зафиксирована.

Могу ли я сделать это, не добавляя вызов подстроки к каждому методу набора строковых данных для соответствующих сущностей?

33
задан Fabien 4 October 2011 в 10:35
поделиться