繁体   English   中英

日期前缀自动增量id在JPA + Hibernate中

[英]date prefix auto increment id In JPA + Hibernate

我必须生成一个自定义的自动增量,该增量每天在时间00:00重置为前缀的自动增量值

例如,2016年1月9日,ID的范围应为1601090001至1601099999,2016年12月15日的ID范围应为1612150001至1612159999。

例如:1612150001的特性如下

  1. id是一个INT
  2. 前两位数字代表年份,16表示2016
  3. 数字3和4表示月份,
  4. 5和6代表日期
  5. 并只剩下一个计数器,因此我希望一天之内生成的记录少于9999个。

如何在JPA中实现此目标,最好的方法是什么,目前,我使用另一个表来对当前值进行计数,并使用上次更新时间和当前时间来计算前缀并确定自动递增部分以将其重置为1或不。 我觉得这不是一个正确的解决方案。

有没有一种方法可以将@GeneratedValue注释与自定义策略一起使用,如果可以的话,该如何做而又不会导致错误(无法生成ID)。

我找到了两个可以解决问题的方法


您可以使用hibernate @GenericGenerator批注并创建一个自定义序列生成器。 这样的答案中有一个例子


您还可以使用JPA @PrePersist批注。

@PrePersist
public void getNextIdFromGenerator() {
   id = yourInjectedGeneratorOrSomething.nextId(); 
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM