我在使用JPA 2.0,SpringMvc 3.0尝试在多对多关系中插入新元素时遇到了令人讨厌的错误消息。javax.validation.ConstraintViolationException:在验证preUpdate时违反Bean验证约束
我有一个表与国家和另一个与人的表。一个人可以被联系到许多国家和一个国家。 在这种特殊情况下,我有一个listOfStates,然后是一个人,我想将这些元素插入到我的多对多关系中。
多对多关系(表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)
}
)
我是从我的控制器
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;
}
有趣的是,该代码工作正常时调用DAO 代码我不是从网页插入数据。我在这里做错了什么?我已经在DB中拥有一些人员和州。
完整的堆栈错误消息:
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.
任何指针将非常感激。在此先感谢大家。
但禁用验证并不能解决问题的核心,它只是忽略它。 – Ralph 2011-05-24 07:05:52
感谢您的支持。但是如果你可以更多地研究它为什么验证是一个问题。请在这里分享。 – 2013-06-22 14:42:56