1
我有一個父實體客戶端。該客戶可以訪問該網站並創建約會。這意味着約會是在另一個時間創建的,然後是客戶端對象。繼續在GAE上添加子實體到父代
我的問題是:如何將子對象添加到已經保存的父對象? 如果調用以下示例中的函數addData1(),則會創建約會表並添加條目。當函數addData2()被調用時,這不會發生。
是不是因爲當關閉實體管理器後更新持久對象時,這也會在表中更新?
@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);
}
感謝您的回覆。您的示例確實有效,但可能沒有持久客戶端對象的實體管理器。在這種情況下,您如何爲客戶添加約會? – Noob
就你而言,你可以先嚐試堅持預約實體,然後檢索約會,然後添加到你的客戶端對象。 –