Hibernate:查询条件为多对多,哈希集为空 我有一个关于hibernate多对多查询的问题。 @实体 @表(name=“ROLES”) 公共类角色实现可序列化{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) @ManyToMany(mappedBy=“roleSet”,fetch=FetchType.EAGER,cascade=CascadeType.MERGE) @Fetch(FetchMode.SELECT) private Set parentSet=new HashSet(); @ManyToMany(targetEntity=Role.class,cascade={CascadeType.ALL},fetch=FetchType.EAGER) @Fetch(FetchMode.SELECT) @JoinTable(name=“R\u PARENT\u ROLE”、joinColumns=@JoinColumn(name=“parentId”)、inverseJoinColumns=@JoinColumn(name=“ROLEID”)) private Set roleSet=new HashSet(); }

Hibernate:查询条件为多对多,哈希集为空 我有一个关于hibernate多对多查询的问题。 @实体 @表(name=“ROLES”) 公共类角色实现可序列化{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) @ManyToMany(mappedBy=“roleSet”,fetch=FetchType.EAGER,cascade=CascadeType.MERGE) @Fetch(FetchMode.SELECT) private Set parentSet=new HashSet(); @ManyToMany(targetEntity=Role.class,cascade={CascadeType.ALL},fetch=FetchType.EAGER) @Fetch(FetchMode.SELECT) @JoinTable(name=“R\u PARENT\u ROLE”、joinColumns=@JoinColumn(name=“parentId”)、inverseJoinColumns=@JoinColumn(name=“ROLEID”)) private Set roleSet=new HashSet(); },hibernate,many-to-many,criteria,Hibernate,Many To Many,Criteria,我想查询父集合为空的角色列表 代码如下: i have a question about the hibernate many to many query. @Entity @Table(name = "ROLES") public class Role implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @ManyToMany(

我想查询父集合为空的角色列表 代码如下:

i have a question about the hibernate many to many query.


 @Entity
    @Table(name = "ROLES")
    public class Role implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
     @ManyToMany(mappedBy = "roleSet", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
        @Fetch(FetchMode.SELECT)
        private Set<Role> parentSet = new HashSet<Role>();
     @ManyToMany(targetEntity = Role.class, cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
        @Fetch(FetchMode.SELECT)
        @JoinTable(name = "R_PARENT_ROLE", joinColumns = @JoinColumn(name = "parentId"), inverseJoinColumns = @JoinColumn(name = "ROLEID"))
        private Set<Role> roleSet = new HashSet<Role>();
    }
公共列表获取(类clazz){
Session=getSession();
标准=session.createCriteria(clazz);
createAlias(“父集合”、“父集合”);
criteria.add(Restrictions.isNull(“parentSet”);
返回条件。list();
}
但结果不是我想要的。 如何做? 谁能告诉我? 非常感谢

我测试这段代码:

public <T> List<T> gets(Class<T> clazz){
         Session session = getSession();
        Criteria criteria = session.createCriteria(clazz);
        criteria.createAlias("parentSet","parentSet");
          criteria.add(Restrictions.isNull("parentSet"));
           return criteria.list();        
        }
公共列表获取(类clazz){
Session=getSession();
标准=session.createCriteria(clazz);
标准。createAlias(“roleSet”、“roleSet”);
标准。添加(限制。财产(“角色集id”、“id”);
返回条件。list();
}
结果如我所愿。 我认为parentSet为null,因此表r\u parent\u role中的role.id 仅用于parentid,不用于roleid。 谢谢

我测试这段代码:

public <T> List<T> gets(Class<T> clazz){
         Session session = getSession();
        Criteria criteria = session.createCriteria(clazz);
        criteria.createAlias("parentSet","parentSet");
          criteria.add(Restrictions.isNull("parentSet"));
           return criteria.list();        
        }
公共列表获取(类clazz){
Session=getSession();
标准=session.createCriteria(clazz);
标准。createAlias(“roleSet”、“roleSet”);
标准。添加(限制。财产(“角色集id”、“id”);
返回条件。list();
}
结果如我所愿。 我认为parentSet为null,因此表r\u parent\u role中的role.id 仅用于parentid,不用于roleid。
谢谢

嗨,你解决这个问题了吗?我也面临着同样的问题。你是如何处理空集的?嗨,你解决了这个问题吗?我也面临着同样的问题。您是如何处理空集的?