Database 如果集合包含集合,则休眠条件

Database 如果集合包含集合,则休眠条件,database,hibernate,hibernate-criteria,restriction,Database,Hibernate,Hibernate Criteria,Restriction,我有一节私人课 @Entity @Table(name = "PK_PRIVS", schema = "dbo") public class Priv implements java.io.Serializable{ private static final long serialVersionUID = 1L; private String code; private String name; private String description; private PrivType type

我有一节私人课

@Entity
@Table(name = "PK_PRIVS", schema = "dbo")
public class Priv implements java.io.Serializable{

private static final long serialVersionUID = 1L;
private String code;
private String name;
private String description;
private PrivType type;
//...
} 
以及一个报表类,它与Priv有多对多关系,并包含一组相关的Priv-Priv

@Entity
@Table(name = "REPORT", schema = "dbo")
public class Report implements java.io.Serializable {

//...

private Set<Priv> privs = new HashSet<Priv>(0);

//...

@JsonIgnore
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "REPORT_PK_PRIVS", schema = "dbo", joinColumns = { @JoinColumn(name = "REPORT_ID") }, inverseJoinColumns = { @JoinColumn(name = "PK_PRIVS_CODE") })
public Set<Priv> getPrivs() {
    return this.privs;
}

public void setPrivs(Set<Priv> privs) {
    this.privs = privs;
}



}
现在我有了一组字符串,它们是Priv类的代码。代码是Priv中的主键

Set<String> privsCodesSet; //set of codes of Priv classes
我需要一个标准,允许我找到报告,它的Priv集合中的所有代码都包含在privscodeset中。例如,如果我有privsCodeSet={code1,code2}

带有代码{code1的privs的报告应为结果,但 不应使用代码为{code1,code2,code3}的privs报告

我还有一个类,它是Priv和Report的连接,但我不确定它是否有帮助。

这段代码应该可以工作

    Criteria reportPrivCriteria = currentSession()
        .createCriteria( Report.class, "r");
    reportPrivCriteria.createAlias("privs", "p");
    reportPrivCriteria.add(Restrictions.in(p.code, privsCodeSet));
你的私人课上有这样的东西吗

    private Set<Report> reports;

    // ...

    @ManyToMany(mappedBy="privs")
    public Collection<Report> getReports() {
         return reports;
    }

我试过这样的方法:Criteria reportPrivCriteria=currentSession.createCriteria Report.class,r;reportPrivCriteria.createCriteriaprivs,p;reportPrivCriteria.addResstriction.inp.code,privscodes