我有一个Web应用程序,使用EclipseLink和MySQL存储数据。
其中一些数据是字符串,即DB中的varchars。
在实体代码中,字符串具有如下属性:
@Column(name = "MODEL", nullable = true, length = 256)
private String model;
数据库不是由eclipseLink从代码创建的,但长度与DB中的varchar长度匹配。
当这种字符串数据的长度大于length属性时,在调用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
然后事务回滚。
虽然我明白这是默认行为,这不是我想要的。
我希望数据被静默截断,并且事务被提交。
我可以这样做而无需为相关实体的字符串数据的每个设置方法添加对子字符串的调用?