如何解决javax.validation.ConstraintViolationException:preUpdate验证违反了Bean验证约束
| 尝试使用JPA 2.0,SpringMvc 3.0以多对多关系插入新元素时,出现了令人讨厌的错误消息。 我有一张与国家的桌子,另一张与人的桌子。一个人可以链接到许多州,一个州可以链接到许多人。 在这种情况下,我有一个listOfStates,然后是一个人,我想将这些元素插入我的多对多关系中。 ManyToMany关系(表STATE) //bi-directional many-to-many association to Appointment
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name=\"PERSON_STATE\",joinColumns={
@JoinColumn(name=\"PERSON_ID\",nullable=false)
},inverseJoinColumns={
@JoinColumn(name=\"CODE_STATE\",nullable=false)
}
)
我从控制器调用的DAO代码
try{
getEntityManager().getTransaction().begin();
getEntityManager().persist(myPerson);
IStateDAO stateDAO = new StateDAO();
for (int i=0; i<listOfStates.length; i++){
State myState = stateDAO.findState(listOfStates[i]);
if (myState != null){
myState.getPersons().add(myPerson);
getEntityManager().persist(myState);
}
}
getEntityManager().getTransaction().commit();
getEntityManager().close();
} catch (RuntimeException re) {
getEntityManager().close();
throw re;
}
有趣的是,当我不从网页插入数据时,此代码可以正常工作。我在这里做错了什么?我已经在数据库中有一些人和州。
全栈错误消息:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:\'preUpdate\'. Please refer to embedded ConstraintViolations for details.
javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:\'preUpdate\'. Please refer to embedded ConstraintViolations for details.
任何指针将不胜感激。预先谢谢大家。
解决方法
哇!得到它了!我不得不将persistence.xml中的验证模式从“自动”更改为“无”,这基本上告诉应用程序根本不使用bean验证。错误消息消失了,我的DAO正常运行了。
,异常指出使用JSR 303 Bean验证,并且Hibernate配置为(Persistence.xml)在更新任何内容之前对其进行检查。
JSR 303 Bean验证是类似于以下的注释:
javax.validation.constraints.NotNull
javax.validation.constraints.Size
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。