Hibernate删除多对多关联并再次插入相同的关系数据

Hibernate删除多对多关联并再次插入相同的关系数据,hibernate,Hibernate,朋友们,我有以下情况: 1-插入一个具有多对多角色的用户对象。 2-当我更改用户和任何属性时,它会删除与roles JoinTable的任何关系,并再次插入它O_O! stackTrace下面的3: Hibernate: update usu_usuario set usu_versao=?, usu_nome=? where usu_id=? and usu_versao=? Hibernate: delete from usa_usuario_autorizacao where usu_id

朋友们,我有以下情况:

1-插入一个具有多对多角色的用户对象。 2-当我更改用户和任何属性时,它会删除与roles JoinTable的任何关系,并再次插入它O_O! stackTrace下面的3:

Hibernate: update usu_usuario set usu_versao=?, usu_nome=? where usu_id=? and usu_versao=?
Hibernate: delete from usa_usuario_autorizacao where usu_id=?
Hibernate: insert into usa_usuario_autorizacao (usu_id, aut_autorizacao) values (?, ?)
实现了equals和hashCode

我手动测试了equals,并告知排序规则是相同的。我不明白他是怎么看待这个问题的,以及如何运用级联效应

另一个重要信息:Esotu usand希望AngualrJS和Jackson制作JSON解析器。在开始更新之前,我看到了答案并发送了对象和相同的信息,我在集合中检查了equals并返回true。真的不明白

@ManyToMany
    @Cascade({ CascadeType.ALL })
    @JoinTable(
            name = "usa_usuario_autorizacao",
            joinColumns = { @JoinColumn(name = "usu_id", table = "usu_usuario"), },
            inverseJoinColumns = { @JoinColumn(name = "aut_autorizacao", table = "aut_autorizacao") })
    private List<Autorizacao> autorizacoes;

您能发布这两个实体的代码吗?问题很有可能出现在equals/hashcode中。Augusto,我更新了帖子,添加了代码和更多信息。
@Override
    public int hashCode () {
        final int prime = 31;
        int result = super.hashCode();
        result = prime * result + ((autorizacoes == null) ? 0 : autorizacoes.hashCode());
        result = prime * result + ((autorizacoesAutorizacoes == null) ? 0 : autorizacoesAutorizacoes.hashCode());
        result = prime * result + ((confirmacaoSenha == null) ? 0 : confirmacaoSenha.hashCode());
        result = prime * result + ((email == null) ? 0 : email.hashCode());
        result = prime * result + ((nome == null) ? 0 : nome.hashCode());
        result = prime * result + ((senha == null) ? 0 : senha.hashCode());
        result = prime * result + ((senhaAntiga == null) ? 0 : senhaAntiga.hashCode());
        return result;
    }

    @Override
    public boolean equals (Object obj) {
        if (this == obj)
            return true;
        if (!super.equals(obj))
            return false;
        if (getClass() != obj.getClass())
            return false;
        Usuario other = (Usuario) obj;
        if (autorizacoes == null) {
            if (other.autorizacoes != null)
                return false;
        } else if (!autorizacoes.equals(other.autorizacoes))
            return false;
        if (autorizacoesAutorizacoes == null) {
            if (other.autorizacoesAutorizacoes != null)
                return false;
        } else if (!autorizacoesAutorizacoes.equals(other.autorizacoesAutorizacoes))
            return false;
        if (confirmacaoSenha == null) {
            if (other.confirmacaoSenha != null)
                return false;
        } else if (!confirmacaoSenha.equals(other.confirmacaoSenha))
            return false;
        if (email == null) {
            if (other.email != null)
                return false;
        } else if (!email.equals(other.email))
            return false;
        if (nome == null) {
            if (other.nome != null)
                return false;
        } else if (!nome.equals(other.nome))
            return false;
        if (senha == null) {
            if (other.senha != null)
                return false;
        } else if (!senha.equals(other.senha))
            return false;
        if (senhaAntiga == null) {
            if (other.senhaAntiga != null)
                return false;
        } else if (!senhaAntiga.equals(other.senhaAntiga))
            return false;
        return true;
    }