私が使用している:
Spring 3.2
Hibernate 4.1.9
JPA を使用して、3 つのクラスをマップする必要があります。クラス A は、クラス B と多対多の関係にあります。クラス A とクラス B の一意の組み合わせは、クラス C のコレクションを所有する必要があります。
表 A
foo
id | name
表 B
bar
id | name
表 C
data
id | xrefId
Join Table --一意のキー on (fooId,barId)
xref
id | fooId | barId
既存のデータ構造を変更することはオプションではありません。
編集1:
目標: Foo をロードし、Bar のコレクションを取得します。各バーから、その (彼らの!) データのコレクションを取得します。
クラスA
@Entity
public class Foo {
@Id
private UUID id;
@ManyToMany(optional = false)
@JoinTable(name = "xref",
joinColumns = { @JoinColumn(name = "fooId") },
inverseJoinColumns = { @JoinColumn(name = "barId") })
private List<Bar> lstBar = new ArrayList<Bar>();
}
クラスB
public class Bar {
@Id
private UUID id;
@ManyToMany(mappedBy = "lstBar")
private List<Foo> lstFoo = new ArrayList<Foo>();
}
クラスC
public class Data {
@Id
private UUID id;
}