jpa-api 2.0-cr-1 を使用しています。(Maven)
Person と Tag の 2 つのクラスがあります。
各人物は複数のタグを持つことができ、その逆も可能です。
ここで、指定されたすべてのタグに属するすべての人を取得したいと考えています。
たとえば
、person1 は「tall」、「fat」、「bold」
でタグ付けされ、person2 は「tall」と「thin」でタグ付けされ、person3 は
「tall」と「bold」でタグ付けされます。
ここでの問題は、["tall","bold"] をクエリすると、
[person1,person3] を取得する必要があることです。
つまり、指定されたすべてのタグに属する人物を取得したいのです。
public class Person {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "person_name")
private String personName;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "person_tag", joinColumns = { @JoinColumn(name = "person_id") }, inverseJoinColumns = @JoinColumn(name = "tag_id"))
private Set<Tag> tags;
}
public class Tag {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "person_tag", joinColumns = { @JoinColumn(name = "tag_id") }, inverseJoinColumns = @JoinColumn(name = "person_id"))
private Set<Person> persons;