Model view controller javax.validation.ConstraintViolationException:在预更新验证时违反了Bean验证约束

Model view controller javax.validation.ConstraintViolationException:在预更新验证时违反了Bean验证约束,model-view-controller,spring,jpa,Model View Controller,Spring,Jpa,当我试图使用JPA2.0、SpringMVC3.0在多对多关系中插入新元素时,出现了一条恼人的错误消息 我有一张有州的桌子,还有一张有人的桌子。一个人可以链接到许多州,一个州可以链接到许多人。 在这个特殊的例子中,我有一个状态列表,然后是一个人,我想在我的多对多关系中插入这些元素 多个关系(在表状态下) 我从控制器调用的DAO代码 try{ getEntityManager().getTransaction().begin(); getEntity

当我试图使用JPA2.0、SpringMVC3.0在多对多关系中插入新元素时,出现了一条恼人的错误消息

我有一张有州的桌子,还有一张有人的桌子。一个人可以链接到许多州,一个州可以链接到许多人。 在这个特殊的例子中,我有一个状态列表,然后是一个人,我想在我的多对多关系中插入这些元素

多个关系(在表状态下)

我从控制器调用的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;           
}

任何指针都将非常感谢。提前感谢大家。

异常声明使用了,并且配置了Hibernate(Persistence.xml)以在更新任何内容之前检查它们

JSR 303 Bean验证是如下注释:

  • javax.validation.constraints.NotNull
  • javax.validation.constraints.Size

    • 哇!知道了!我必须将persistence.xml中的验证模式从Auto更改为NONE,这基本上告诉应用程序根本不要使用bean验证。错误消息已消失,我的DAO工作正常。

      谢谢您的回答。我确实在类级别使用Hibernate验证器注释来验证从表单绑定的类。但是对于这个特殊的类,我没有指定任何约束,这使我认为这更像是一个内部的东西。我不确定从现在开始该去哪里。user659580:异常没有声明约束冲突与类Person有关!但当我尝试刷新或提交Person时,即使在持久化操作刚完成时,也会发生异常。@user659580,并且不会加载或更改任何其他内容?对象图中是否存在任何Bean验证约束?日志中没有更多信息吗?应该在某个地方记录错误路径。这会让你知道哪个约束在哪个对象上失败了。但是禁用验证并不能解决问题的核心,它只是忽略它。谢谢。但是如果你能对它进行更多的调查,那就是为什么验证是一个问题。请在这里分享。
      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.