[英]JPA : Re-use Id generated from a sequence for a new version of the same object having composite PK (ID + VERSION)
我有復合 PK [id(從序列生成) + 版本]的實體A。
對於一個全新的記錄,我想從數據庫端定義的序列中選擇 id。 可以說它的創建如下
ID VERSION
1 0
下一次,我想創建一個相同 ID 的新版本,如下所示
ID VERSION
1 0
1 1
注意:在第二種情況下,我不希望它由序列生成器生成,因為我想手動提供它。
在 JPA/Hibernate 中可以嗎? 如果可能的話,有人可以告訴我該怎么做嗎?
提前謝謝了!
Hibernate ORM 不支持使用復合鍵生成 id 。
當您創建新的 object 時,您可能可以運行本機 SQL。 以 PostgreSQL 為例:
Long id = (Long) em.createNativeQuery("SELECT nextval('mysequence')").getSingleResult();
Long version = ...;
EmbeddedId id = new EmbeddedId(id, version);
其中 EmbeddedId 是您的實體的復合鍵:
@Entity
class Example {
@Id
EmbeddedId id;
...
}
@Embeddable
class EventId implements Serializable {
Long id;
Long version;
...
}
其中mysequence
是數據庫中序列的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.