0

JPAには奇妙な問題があります:

エンティティがあり、他のエンティティとの関係を追加したばかりなので、最初のエンティティを編集するときに、別のオブジェクトを永続化し、それを更新する最初のエンティティに設定する必要があります。

例によって

会社は最初のエンティティであり、マネージャー エンティティを追加したので、私の会社には、マネージャー テーブルとの関係を持つ「マネージャー」という名前の新しいフィールドができました (そのマネージャーは 1 対多数の会社を管理できるため、多対 1)。

このシナリオのクラス定義には、次のものがあります。

Company.java:

@JoinColumn(name = "manager", referencedColumnName = "id")
    @ManyToOne
    private Manager manager;

Manager.java:

@OneToMany(mappedBy = "manager")
private List<Company> companies;

そのため、新しいマネージャーを会社に設定しました.remotefacadeを介して編集すると、新しいマネージャーが作成されますが、以前の会社には設定されていません.

奇妙なことに、cascade.persist アノテーションはどこにもありませんが、編集時に永続化されています。

誰かが私を助けることができます:)?

編集:

これは、マネージャーを会社に設定する方法です。

アクション.java

Manager m = new Manager();
... (set all the data)

Company c = companyFacade.find(1); // find by ID

c.setManager(m);

companyFacade.edit(c);
4

2 に答える 2

1

マネージャーを会社に関連付けるコードを表示できますか? ご注意ください:

  • また、会社をマネージャーに関連付ける必要があります。例: manager.addCompany(company)
  • mappingBy 属性が適切に設定されていることは確かですか? Company クラスに setAsistente メソッドはありますか?
于 2013-08-29T00:18:00.010 に答える
0

この質問を読んで答えてくれてありがとう。

問題は開発初期のfindメソッドで忘れていた「detach」でした。今では完全に機能しています。

于 2013-08-29T18:06:40.583 に答える