我有一個@GeneratedValue()實體。我知道有不同的代類型。我的問題是:當我創建實體的新實例時,是否有一代生成ID?我需要我的對象的id創建另一個對象,其ID爲FK,但我不想在創建其他對象之前堅持對象。感謝幫助!@GeneratedValue當創建一個新的實例
1
A
回答
0
可以調用store()
方法。 Store方法不會將對象保存在數據庫中。它在hibernate緩存層創建一個代理對象,並返回代理對象,並填充主鍵(是的,自動生成的值可用)。你可以使用這個值作爲你想要的其他對象。完成之後,刷新會話時,所有對象都會保留在數據庫中。
0
您不必擔心獲取生成的ID。只需在Java端設置對象關係(使用setter方法),並在persist()
上JPA將確保將生成的PK設置爲依賴對象上的FK。
給你舉個例子,如果你有以下的實體類
@Entity
public class PKClass {
@Id @GeneratedValue
@Column(name = "PK_ID")
private Long id;
// getters/setters
}
@Entity
public class FKClass {
@Id @GeneratedValue
@Column(name = "FK_ID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "PK_ID")
private PKClass pk;
// getters/setters
}
你會堅持他們(而不用擔心主鍵)作爲
// create a new transaction
EntityTransaction tx = em.getTransaction();
tx.begin();
// setup Java relationships
PKClass pk = new PKClass();
FKClass fk = new FKClass();
fk.setPK(pk);
// persist
em.persist(fk);
// close transaction
tx.commit();
相關問題
- 1. 創建一個新的類實例
- 2. CRM創建一個CrmConnection的新實例
- 3. 創建一個新的weka實例
- 4. ExecutorService - 在方法中創建新實例vs每個類創建一個實例
- 5. 如何創建當前實例的新實例?
- 6. C#創建一個實例
- 7. 創建一個MXML實例
- 8. 創建KClass的新實例
- 9. 創建每個實例的新文件
- 10. 在scala中動態創建一個案例類的新實例
- 11. 創建一個沒有「新」操作符的類的新實例
- 12. Java中,一個類的多個實例重置最新創建的實例
- 13. 創建一個Django模型實例並創建另一個Django模型實例
- 14. 可以使用一個已經創建的實例創建一組實例嗎?
- 15. SQLAlchemy - 在另一個實例中創建一個實例__init__
- 16. 創建一個類的唯一實例,當有幾個實現時
- 17. 創建同一類型的新實例作爲另一個intsance
- 18. Java:創建新實例
- 19. 重新創建實例
- 20. 創建一個對象的新實例,或修改現有的實例?
- 21. startService()是否創建一個新的Service實例或使用現有的實例?
- 22. 創建另一個類的實例
- 23. 創建一個System.Drawing.Graphics的實例
- 24. 創建一個類的靜態實例
- 25. 創建一個UIView的實例 - iOS
- 26. 創建一個RHEL實例的iso
- 27. 如何創建一個類的實例?
- 28. 創建一個經理類的實例
- 29. 創建一個類的實例
- 30. 創建一個CalendarView的實例
多數民衆贊成我需要,謝謝。 – kai
這是'Hibernate'特有的,不會讓你將應用程序移植到不同的ORM上,這就是爲什麼通常首先使用JPA的原因。 –