使用条件的多对多模型将获得重复的行;为什么?

问题描述

我正在使用数据透视表创建与休眠的多对多关系。 我创建了三个名为RequirementCollaborationCollaborationRequirement的模型,其中CollaborationRequirement是我的数据透视表。

public class Requirement {
    @Id
    private Long id;
    
    @OneToMany(mappedBy = "requirement",fetch = FetchType.EAGER,cascade = javax.persistence.CascadeType.ALL)
    private Set<CollaborationRequirement> collaborationRequirement = new HashSet<CollaborationRequirement>();   
}

public class Collaboration {
    @Id
    private Long id;
    
    @OneToMany(mappedBy = "collaboration",cascade = javax.persistence.CascadeType.ALL)
    private Set<CollaborationRequirement> collaborationRequirements = new HashSet<CollaborationRequirement>();
}

public class CollaborationRequirement {
    @Id
    private Long id;
    
    @ManyToOne(cascade = CascadeType.ALL)
    private Requirement requirement;
    
    @ManyToOne(cascade = CascadeType.ALL)
    private Collaboration collaboration;
}

现在,当我想从“需求”表中选择所有行时,会得到重复的数据(恰好是CollaborationRequirement表中具有该需求ID的行数)

RequirementDao:

public List<Requirement> findAll() {
    Session session = getSession();

    try {
        Criteria criteria;

        criteria = session.createCriteria(Requirement.class,"requirement");
        criteria.add(Restrictions.sqlRestriction("1=1"));

        criteria.addOrder(Order.desc("id"));
        List<Requirement> result =  criteria.list();

        return result;
    } finally {
        session.close();
    }
}

所以我的问题是,为什么会出现这个问题?以及如何解决?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...