1

私は「人」と呼ばれるエンティティを持っています。テーブルによってエンティティに結合されpers_addr_tbますAddress。したがって、 Person エンティティは次のようになります

@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "pers_addr_tb", joinColumns = @JoinColumn(name = "pers_ID"), 
                           inverseJoinColumns = @JoinColumn(name = "addr_ID"))
public List<Address> addresses;

ここで、最初に Person を作成し、次にいくつかの Address エンティティを作成するとします。pers_addr_tb が存在しない場合はどうなりますか? Person と Address の作成時に作成されますか?

テストのために、インメモリ HSQL db (OpenEJB を使用) を使用しています。そのため、必要に応じてその場でエンティティを作成する必要があります。ただし、pers_addr_tb はエンティティとして定義されていません。

4

2 に答える 2

0

Person インスタンスを作成して永続化します。JPA は person テーブルに行を挿入します。

次に、Address インスタンスを作成して永続化します。JPA はアドレス テーブルに行を挿入します。

次に、アドレスを個人のアドレスのリストに追加すると、Hibernate は結合テーブルに行を挿入します。

トランザクションをコミットするときに挿入が実際に行われるため、これは実際には部分的に当てはまります。しかし、JPA のような ORM の原則は、エンティティで指定するマッピングが、エンティティとその関連付けを永続化する方法と場所を JPA に伝えることです。

于 2013-06-28T22:12:38.777 に答える