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

标签 java hibernate hibernate-mapping

例子我有这张表

表事务

  • id 整数 (PK)
  • unit varchar(10)
  • 期刊编号

期刊号是单位和序列的组合。所以示例数据可能是这样的

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'

然后将结果分配给新行

最佳答案

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

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

关于java - Hibernate 使用 field + max 的组合在非主键上生成值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610968/

相关文章:

java - Hibernate 逆向工程 - 将表映射到 Java 枚举

java - 何时使用 @OneToMany 和 @ManyToOne 以及 MapStruct - 我得到递归无穷大

java - 验证文本区域

java - Eclipse 重构

java - 为什么在使用同步时使用信号量?

java - 当提醒时间到期时自动事件触发。可以使用 hibernate 来完成吗?

java - 如何调试服务器端错误?

java - 如何创建列表中的数据并将其插入到 Hibernate 查询中

java - JPA ManyToMany 持续存在

java - Hibernate删除和更新