Java Hibernate-JPA中的自动截断

Java Hibernate-JPA中的自动截断,java,hibernate,jpa,spring-data-jpa,Java,Hibernate,Jpa,Spring Data Jpa,我们从文档中捕获数据,有时我们捕获的数据超过了我们在数据库中存储的数据量。我希望能够跨所有实体对字符串值执行自动截断,我不希望事务因以下原因而失败: 无法处理保护作业;exception=org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];嵌套异常为org.hibernate.exception.DataException:无法执行语句 位于org.springframework.orm.jpa.vend

我们从文档中捕获数据,有时我们捕获的数据超过了我们在数据库中存储的数据量。我希望能够跨所有实体对字符串值执行自动截断,我不希望事务因以下原因而失败:

无法处理保护作业;exception=org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];嵌套异常为org.hibernate.exception.DataException:无法执行语句
位于org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:261)
在org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateException如果可能(HibernateJpaDialect.java:223)。。。
我想在一个地点完成这一切。目前,我的方法是在拦截器中使用反射:
org.hibernateEmptyInterceptor
来截断任何
字符串
成员,但如果已经有了解决方案,我希望避免这样做,这不需要感觉像是一把大锤


我们不断地在各种地方出现这个错误,我们真的不在乎丢失一些数据,我想一劳永逸地阻止它。但我不想编辑每一个setter,如果我没有,我们必须对每个
实体
进行截断,因为我相信在某些地方我们很容易忘记这样做。我已经研究过其他方法,但大多数方法都是围绕验证展开的,这是我不想要的。我不想抛出验证错误,我想截断。

您尝试过创建属性转换器吗?嘿,谢谢,这可能是一个选项,我将尝试一下。您可以创建自定义实体侦听器,将应用于所有实体,一个点。但是,假设您仍然需要反射来获取列长度(从注释值?)和修剪字符串。您确定错误是数据的大小,我认为它应该在MySQL DataException中抛出,在oracle SQLException中,DataIntegrityViolationException更适合PK和FK问题,您不是在尝试插入对象而不是更新它吗?