簡體   English   中英

序列發生器:JAVA / JPA / SPRING

[英]Sequence generator : JAVA/JPA/SPRING

問題 :是否可以不使用對偶選擇someSequence來生成序列號;

問題@GeneratedValue@SequenceGenerator默認使用select someSequence from dual; 為我的身份證獲取nextval。 但是我的用戶沒有從雙重表中選擇的權限,因此我只能使用id = sequence.nextval,但我不知道如何在Entity類中使用它。 還是應該將id值傳遞給諸如sequence.nextval之類的實體構造函數?

用法: Oracle DB,CrudRepository,save()方法。

我認為您需要編寫自己的策略並使用GenericGenerator注釋。 這個答案可能對您有幫助: 鏈接

您可以在以下查詢的幫助下插入id:

select max(id) from <<tableName>>;

如果無法從對偶表中進行選擇,則可以查詢自己的表,找到最大id,將其遞增1並將其分配為新的id。

您需要首先在Oracle中創建序列:

CREATE SEQUENCE USER_SEQUENCE START WITH 1 INCREMENT BY 10;

然后注釋您的班級,如下所示:

@Entity
@SequenceGenerator(name="USER_SEQUENCE_GENERATOR", sequenceName="USER_SEQUENCE", initialValue=1, allocationSize=10)
public class User {
    @Id
    @Column(name="USER_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USER_SEQUENCE_GENERATOR")
    private Long userId;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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