3

問題の解決策が見つからないので、少し混乱しています(おそらくある種の停電です)

次の(簡略化された)エンティティがあるとしましょう:

@Entity
public class Employee {
    @Id
    private long id;
    @OneToMany(mappedBy="owner")
    private Collection<Phone> phones;
}

@Entity
public class Phone {
    @Id
    private long id;
    @ManyToOne
    private Employee owner;
}

JPAによって管理される電話オブジェクトがあります。そして今、その電話オブジェクトの従業員を次のように変更したいと思います:

phone.setEmployee(otherEmployee);

JPAが更新すると、対応するEmployeeも更新されると思いました。私が間違っている?注釈 @ManyToOne および @OneToMany (cascade = CascadeType.ALL、orphanRemoval = true) を試しましたが、機能しません。

自分で Employee オブジェクトを更新する必要がありますか? 残念ながら、チュートリアルやその他の例でそのケースが見つからなかったので、もっと教えていただければ幸いです。混乱しています。前もって感謝します。

さらに明確にするために編集します。

Phone phone = new Phone();
Employee employee = new Employee();
phone.setEmployee(employee);
em.persist(employee);
em.persist(phone);

employee.getPhones(); //the phone object should be included here.
4

1 に答える 1

7

このリンクはあなたの質問に対する答えです。関係を自分で管理する必要があります。

class Phone {
...
   void setEmployee(Employee employee) {
      owner = employee;
      employee.addPhone(phone);
   }
...
}
于 2013-06-17T07:37:39.740 に答える