4

JPAアプリケーションを構築しようとしています。私は基本的に持っています

@Entity
public class Folder {
  @Id
  @GeneratedValue(strategy = GenerationType.TABLE)
  private int id;
  private String description;
  private String name;

  @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
  private List<AbstractItem> items = new LinkedList<AbstractItem>();

  @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
  private List<AbstractItem> items2 = new LinkedList<AbstractItem>();
  .
  .
  .
}

リストに 1 つの項目を正常に追加しitem、それを永続化できます。ただし、再度ロードすると、永続アイテムの同じオブジェクトがリストitemsitems2.

注釈を追加してこれを修正しようとしましたが、機能さ@JoinTableせることができませんでした。

助言がありますか?

4

2 に答える 2

4

それぞれの場合について、AbstractItem の「Folder」への参照が 2 つ必要です。したがって、mappedBy 値はそれに応じて指定する必要があります。

  @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
  private List<AbstractItem> items = new LinkedList<AbstractItem>();

  @OneToMany(mappedBy = "parent2", cascade = CascadeType.PERSIST)
  private List<AbstractItem> items2 = new LinkedList<AbstractItem>();
于 2013-02-22T12:10:24.353 に答える
1

あなたのmappedBy属性は という名前parentの一意のプロパティにリンクしています。つまり、同じ属性によってとAbstractItemをリンクAbstractItemしています。 2 番目のリストを としてマップすると、テーブルに 2 つの外部キーが存在します。に新しいプロパティと新しい列が必要ない場合は、 2 つの連想テーブル (との場合) を使用します。Folder
parent2AbstractItemFolder
itemsitems2AbstractItem

于 2013-02-22T12:12:24.277 に答える