2011-12-22 71 views
1

例我有此表Hibernate來生成與場+最大的組合的非主鍵值

表交易

  • ID INT(PK)
  • 單元VARCHAR(10)
  • journal_number

日誌序號是單元和序列的組合。所以示例數據可能是這樣的

id | unit | journal_number 
------------------------------ 
1 | 'unit1' | 1 
2 | 'unit1' | 2 
3 | 'unit2' | 1 
4 | 'unit2' | 2 

... 

我如何自動創建journal_number?

是否有任何解決方案,這在休眠沒有這樣做手動? 像使用發電機

如果我必須手動執行此操作,例如,如果有'行1'的新行。然後,我必須對這一

select max(journal_number) where unit = 'unit1' 

然後將結果ASIGN到新行

+0

你可以使用複合鍵。如果我得到它 – 2011-12-22 23:53:09

+0

我想也許組合鍵是關鍵字,但如何通過序列自動生成journal_id? – ahmy 2011-12-23 00:04:54

+0

不,它不僅僅是一個關鍵字,在尋找解決方案後,Hibernate中有一個名爲composite-id – 2011-12-23 00:12:51

回答

0

我不知道如果我得到你的point.But似乎喲想複合鍵。 如果是,那麼你可以在你的映射文件中做到這一點。

<composite-id name="MyKey" class="string"> 
    <key-property name="firstKey"/> 
    <key-property name="secondKey"/> 
</composite-id>