当字符串的长度超过列长度定义时,如何在存储字符串时静默截断字符串?
我有一个Web应用程序,使用EclipseLink和MySQL来存储数据。其中一些数据是字符串,即数据库中的变量。在实体代码中,字符串具有如下属性:
@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
然后回滚事务。虽然我知道这是默认行为,但这不是我想要的。我希望以静默方式截断数据,并提交事务。
我是否可以在不向相关实体的每个字符串数据集添加对子字符串的调用的情况下执行此操作?