Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA和x2B中的日期前缀自动递增id;冬眠_Java_Mysql_Hibernate_Jpa_Auto Increment - Fatal编程技术网

Java JPA和x2B中的日期前缀自动递增id;冬眠

Java JPA和x2B中的日期前缀自动递增id;冬眠,java,mysql,hibernate,jpa,auto-increment,Java,Mysql,Hibernate,Jpa,Auto Increment,我必须生成一个自定义的自动增量,它每天00:00重置到日期前缀的自动增量值 例如,2016年1月9日,id应在1601090001到1601099999之间, 2016年12月15日t应为1612150001至161215999 例:1612150001的特征如下 id是一个INT 前两位数代表年份,16表示2016年 数字3和4表示月份 5和6代表日期 剩下的只是一个计数器,所以我预计我们一天生成的记录不到9999条 如何在JPA中实现这一点,最好的方法是什么,目前我使用另一个表来计算当前值,

我必须生成一个自定义的自动增量,它每天00:00重置到日期前缀的自动增量值

例如,2016年1月9日,id应在1601090001到1601099999之间, 2016年12月15日t应为1612150001至161215999

例:1612150001的特征如下

  • id是一个INT
  • 前两位数代表年份,16表示2016年
  • 数字3和4表示月份
  • 5和6代表日期
  • 剩下的只是一个计数器,所以我预计我们一天生成的记录不到9999条
  • 如何在JPA中实现这一点,最好的方法是什么,目前我使用另一个表来计算当前值,并使用上次更新的时间和当前时间来计算前缀,并决定是否将自动增量部分重置为1。我觉得这不是一个正确的解决方案


    有没有一种方法可以使用@GeneratedValue注释和自定义策略来实现这一点,如果有,我如何做才能不导致错误,因为它无法生成ID。

    我找到了两个可以实现这一点的选项


    您可以使用hibernate注释并创建自定义序列生成器。有一个问题


    您还可以使用JPA注释

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

    我找到了两个可以实现这一目的的选项


    您可以使用hibernate注释并创建自定义序列生成器。有一个问题


    您还可以使用JPA注释

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

    为什么没有评论,是因为没有直接的解决方案还是其他什么……这太疯狂了,所以这个问题没有解决方案,或者没有人知道直接的解决方案……这真的太疯狂了……然后我想是时候采用Java和Hibernate以外的一些其他技术了……你做到了吗?我没有做到,因为我花了很长时间…才得到这个回复…目前我在另一张表上使用了一个计数器,一切正常…当我有机会重构我现有的代码时,我将尝试以下方法…为什么没有注释,是因为没有直接的解决方案还是其他什么…这太疯狂了,所以这个问题没有解决方案,或者没有人知道直接的解决方案……这真是太疯狂了……然后我想是时候采用Java和Hibernate以外的其他技术了……你让它工作了吗?我没有这样做,因为我花了很长时间…才得到这个回复…目前我在另一个表上使用了一个计数器,一切正常…当我有机会重构我现有的代码时,我将尝试以下方法。。。