我在使用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