gpt4 book ai didi

java - 使用不是 Id 的 hibernate 和 Mysql 的自动增量,所以我可以用触发器重置它

转载 作者:行者123 更新时间:2023-11-30 22:23:53 25 4
gpt4 key购买 nike

我正在实现一个注册表应用程序,其中每条记录都使用 01/2016、02/2016 等引用进行标识,等等。在我的实体类中,我正在使用

@Column(nullable = false)
private int year=Calendar.getInstance().get(Calendar.YEAR);
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int numReception; // this field will reset each year with a trigger.
private String reference; // This field should look like "01/2016", filled by a trigger too.

引用字段也将由触发器作为组合填充:“numReception/year”。

问题是 hibernate 不会自动递增不是主键的东西,我也不能在可嵌入的复合键内使用自动递增。@prepersist@postPersist 无法正常工作,因为如果您使用 session API(用于代替触发器),JPA 回调将无法正常工作。

有什么实现自动增量的解决方案吗?还有其他建议吗?

最佳答案

所以最后我使用了一个复合键作为 @embeddable 有两个字段 id 和年份,我按照 geert3 的建议使用此 SQL 查询将 id 设置为 auto_increment

ALTER TABLE MY_TABLE MODIFY COLUMN id INT auto_increment;

我将其包含在一个 .sql 文件中并使用属性将其添加到 hibernate 状态

<prop key="hibernate.hbm2ddl.import_files">set_auto_increment.sql</prop>

这样我就可以继续使用 Hibernate 生成我的数据库。

关于java - 使用不是 Id 的 hibernate 和 Mysql 的自动增量,所以我可以用触发器重置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com