親エンティティ クライアントがあります。このクライアントは、Web サイトにアクセスして予定を作成できます。これは、クライアント オブジェクトとは別の時間に予定が作成されることを意味します。
私の質問は、既に永続化されている親オブジェクトに子オブジェクトをどのように追加するのですか? 以下の例の関数 addData1() が呼び出されると、Appointment テーブルが作成され、エントリが追加されます。関数 addData2() が呼び出されると、これは起こりません。
entitymanager を閉じた後に永続化されたオブジェクトを更新すると、これもテーブルで更新されるようになっていませんか?
@Entity
public class Client{
@Id
private String name;
@OneToMany(cascade = CascadeType.ALL)
private Set<Appointment> appointments;
}
@Entity
public class Appointment{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key id;
}
// This works
public function addData1(){
EntityManager em = EMF.get().createEntityManager();
Client client = new Client(name);
for(Appointment a : newAppointments)
client.addAppointment(a);
em.persist(client);
em.close();
}
// This doesn't work.
public function addData2(){
EntityManager em = EMF.get().createEntityManager();
Client client = new Client(name);
em.persist(client);
em.close();
for(Appointment a : newAppointments)
client.addAppointment(a);
}