2015-09-25 55 views
0

我的類不是實體有我想要檢索NEXTVAL這樣的代碼片段生成序列NexVal不執行select查詢

@SequenceGenerator(name="seqUniqueKeyGenerator",sequenceName="SEQ_UNIQUE_KEY",allocationSize=1) 
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqUniqueKeyGenerator") 
@Id 
private Integer sequenceId; 

public Integer getSequenceId() { 
    return sequenceId; 
} 

public void setSequenceId(Integer sequenceId) { 
    this.sequenceId = sequenceId; 
} 

public static void main(String[] args) { 
    UniqueKeyGenerator uniqueKeyGenerator = new UniqueKeyGenerator(); 
    System.out.println(uniqueKeyGenerator.getSequenceId()); 

} 

,這可能嗎?

回答

0

我們都使用@SequenceGenerator知道什麼時候休眠的默認行爲 - 它由一個增加實際的數據庫序列,由50(默認值allocationSize)多這個值 - 然後使用這個值作爲實體ID。

From G. Demecki

這意味着,在您的Java程序不會生成的ID。它在您的數據庫中創建。所以你不能在數據庫中生成它之前閱讀它。你可以使用G.Demecki描述的公式來猜測它,但那肯定不是要走的路。 如果你想要一個實體的id保存並從保存實體本身的返回值中讀取id。

1

您可以使用thread中提到的nextVal,但您必須考慮它是通過SQL語句消耗的,這意味着這是一種耦合到數據庫的解決方案。

我不知道以這種方式消耗nextVal的方式,你問上面。

相關問題