Hibernate使用field + max的组合在非主键上生成值

时间:2011-12-22 23:49:14

标签: java hibernate hibernate-mapping

示例我有这个表

表格交易

  • id int(PK)
  • unit varchar(10)
  • journal_number

日记帐编号是单元和序列的组合。所以示例数据可能就像这样

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

...

我如何自动创建journal_number?

在hibernate中是否有任何解决方案而不手动执行此操作? 比如使用发电机

如果我必须手动执行此操作,例如,如果'unit1'有新行。然后我必须这个

select max(journal_number) where unit = 'unit1'

然后将结果标记为新行

1 个答案:

答案 0 :(得分:0)

我不知道我是否明白你的意思。但似乎你想要一个复合键。 如果是,那么您可以在映射文件中执行此操作。

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