簡體   English   中英

自動增量不適用於具有復合鍵的實體 class

[英]Auto Increment not working for Entity class with composite Key

我希望我的復合鍵元素之一自動遞增,並且我正在為我的實體@EmbeddedId使用嵌入式鍵,因此我無法使用生成值注釋來解決問題,因為在使用@Embeddable@GeneratedValue注釋時會忽略它@EmbeddedId

不能使用@GeneratedValue@EmbeddedId@Embeddable@IdClass ,在@GeneratedValue注釋被忽略。 您必須手動分配值。

檢查以下參考:

https://java.net/jira/browse/GLASSFISH-13567

https://forums.hibernate.org/viewtopic.php?p=2393944&sid=57b20ef2c7de6f6bcba632130987bc22

這是錯誤的,但我會給你答復:

使用類似的東西來獲取下一個 val 並在保存之前進行設置。

在存儲庫中:

@Query(value = "SELECT SQ_CD_PLANO.nextVal FROM dual", nativeQuery = true)
Long getNextSequence();

在職:

Long nextVal = planHistRepository.getNextSequence();
planHist.getPlanHistId().setPlanCode(nextVal);
PlanHist planHistSaved = planHistRepository.save(planHist);

為什么錯了? 因為@EmbeddedId 忽略了自身內部的@GeneratedValue。 但我通過的工作會讓你微笑。

注意:我在此演示中使用 ORACLE 數據庫。 注2:SQ_CD_PLANO 是為自動增量創建的序列。

暫無
暫無

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

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