如何解决constraintviolationexception?

6rvt4ljy  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(343)

当我尝试在crm Web应用程序(primefaces)中保存一些数据时,出现了以下异常:

Caused by: javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'. Please refer to embedded ConstraintViolations for details.

问题是我搞不清楚是什么原因造成的。日志堆栈策略根本不包含任何有用的信息。。。
我有很多断点,还插入了这个validatorfactory代码行,我在stackoverflow上找到了这些代码行,插入和编辑了我拥有的方法(这些方法在我的abstractfacade类中),但是这个validatorfactory在实际保存方法之前给了我0个无效的entites,所以我还是不明智…:

public T edit(T entity) {
        logger.info("oldVersion {0}", new Object[]{entity.getVersion()});

        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        javax.validation.Validator validator = factory.getValidator();
        Set<ConstraintViolation<T>> constraintViolations = validator.validate(entity);
        if (constraintViolations.size() > 0 ) { 
           logger.error("Constraint Violations occurred.."); 
           for (ConstraintViolation<T> contraints : constraintViolations) {
                logger.error(contraints.getRootBeanClass().getSimpleName()+
                "." + contraints.getPropertyPath() + " " + contraints.getMessage());
            }        
            getEntityManager().persist(entity);              
        }

        try {
            entity = (T) getEntityManager().merge(entity);
        } catch (OptimisticLockException e) {
            JsfUtil.addErrorMessage("Somebody already modified these lines:" + entity.getClass());
            entity = find(entity.getId());
            refresh(entity);
        }

        return entity;
    }

错误出现在 getEntityManager().merge(entity); 被称为 edit() 方法。
有人知道现在该怎么办吗?
编辑:
我正在使用netbeans、eclipselink(jpa2.1)和glassfish。日志上写着:“有关详细信息,请参阅嵌入的constraintviolations。”
这个嵌入的约束到底在哪里?我在玻璃鱼日志里没有看到任何关于这个的东西。。。
我还编辑了my persistence.xml:

<property name="eclipselink.logging.level" value="FINEST"/>
<property name="eclipselink.logging.level.sql" value="FINEST"/>

但重新启动和重新测试后,我仍然看到只有相同的日志条目,没有更多。。。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题