У меня есть класс Privкритерии Hibernate, если коллекция содержит коллекцию
@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;
//...
}
и отчет о классе, который имеет многие ко многим отношений с собствами и содержит множество связанного Privs - privs.
@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 (код Первичный ключ в собств).
Set<String> privsCodesSet; //set of codes of Priv classes
мне нужен критерий, который позволит мне найти, что отчеты, которые все коды из множества ее собств содержат в privsCodesSet. Например, если у меня есть privsCodeSet = {"code1", "code2"}
Сообщить о наличии привилегий с кодом {"code1" "должно быть в результате, но Сообщить о наличии привилегий с кодами {" code1 "," code2 " , «code3»} не должен.
у меня также есть класс, который является объединением Priv и отчета, но я не уверен, если это поможет.
Я пытался что-н, как это:. Критерии reportPrivCriteria = currentSession() createCriteria ( \t \t \t \t Report.class, "г"); \t \t reportPrivCriteria.createCriteria ("privs", "p"); reportPrivCriteria.add (Resstriction.in (p.code, privsCodeSet)) – biesczadka