Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我只是清除@OneToMany关系,验证不会被触发_Java_Hibernate_Validation_Jpa_Merge - Fatal编程技术网

Java 如果我只是清除@OneToMany关系,验证不会被触发

Java 如果我只是清除@OneToMany关系,验证不会被触发,java,hibernate,validation,jpa,merge,Java,Hibernate,Validation,Jpa,Merge,在使用JPA2.0和Hibernate更新实体时,我遇到了一个问题(我没有使用其他提供者进行测试)。以下是我的实体(为简洁起见,请删节): 这是对象持久化后执行的代码: em.getTransaction().begin(); CriterioDefinicaoImpFederais outro = critRepo.porId(criterio.getId()); em.getTransaction().commit(); em.clear(); out

在使用JPA2.0和Hibernate更新实体时,我遇到了一个问题(我没有使用其他提供者进行测试)。以下是我的实体(为简洁起见,请删节):

这是对象持久化后执行的代码:

    em.getTransaction().begin();
    CriterioDefinicaoImpFederais outro = critRepo.porId(criterio.getId());
    em.getTransaction().commit();
    em.clear();
    outro.removerGrupo(outro.getGrupos().get(0));
    outro.removerGrupo(outro.getGrupos().get(0));
    em.getTransaction().begin();
    //This method calls merge
    critRepo.salvar(outro);
    em.getTransaction().commit();

谢谢

我还没有对此进行验证,但可能是因为您没有通过遵循JavaBean规范的setter访问该值


如果您通过普通setter将其设置为一个新的空集合,请尝试。

Hi,您能在检索和更新实体的位置发布代码吗?@Jean感谢您的回答。我创建了一个新方法
setGrupos
并调用
setGrupos(newarraylist())并获得相同的行为。
//This is critRepo.porId
String sql = "select distinct c from CriterioDefinicaoImpFederais c "
        + "  join fetch c.licenca "
        + "  join fetch c.grupos g "
        + "where "
        + "  c.id = :id ";
    em.getTransaction().begin();
    CriterioDefinicaoImpFederais outro = critRepo.porId(criterio.getId());
    em.getTransaction().commit();
    em.clear();
    outro.removerGrupo(outro.getGrupos().get(0));
    outro.removerGrupo(outro.getGrupos().get(0));
    em.getTransaction().begin();
    //This method calls merge
    critRepo.salvar(outro);
    em.getTransaction().commit();