2011-12-22 31 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>