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。
谢谢 嗨,你解决这个问题了吗?我也面临着同样的问题。你是如何处理空集的?嗨,你解决了这个问题吗?我也面临着同样的问题。您是如何处理空集的?