簡體   English   中英

JPA:重復使用從序列生成的 ID,用於具有復合 PK(ID + VERSION)的相同 object 的新版本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM