有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在hibernate和Mysql中使用一个非Id的自动增量,因此我可以用触发器重置它

我正在实现一个注册表应用程序,其中每个记录都用一个引用标识,如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@postersist不起作用,因为如果您使用会话API(用来代替触发器),JPA回调将不起作用

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


共 (1) 个答案

  1. # 1 楼答案

    最后,我使用了一个复合键作为@embeddeble,带有两个字段id和年份, 我使用geert3建议的SQL查询将id设置为自动增量

    ALTER TABLE MY_TABLE MODIFY COLUMN id INT auto_increment;
    

    我把它放在一个盒子里。sql文件,并使用属性将其添加到hibernate

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

    所以我可以继续使用Hibernate生成数据库