私はプライベートクラスを持っています
@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 と多対多の関係を持ち、関連付けられた Privs - privs のセットを含む Report クラス。
@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 セットのすべてのコードが privsCodesSet に含まれているレポートを見つけるための基準が必要です。たとえば、privsCodeSet = {"code1", "code2"} がある場合
コード {"code1"" の権限を持つレポートは結果になるはずですが、コード {"code1", "code2", "code3"} の権限を持つレポートは結果にならないはずです。
Priv と Report を結合したクラスもありますが、それが役立つかどうかはわかりません。