java - 在 MySQL 中使用数字创建序列日期

标签 java mysql hibernate jpa

我想为 directDebit 类的 id 创建一个序列。 为此,我希望日期采用 (dd_mm_yy) 格式,后跟一个数字,表示当天创建的数字。

// Class in java
@Entity
public class DirectDebit implements Serializable {

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "directDebit_generator")initialValue=1, allocationSize=50)
@Id
private String id;

...
}

-- create sequence in mysql
CREATE SEQUENCE directDebit_generator
    START WITH 1
    MAXVALUE 99999999
    MINVALUE 1
    NOCYCLE
    NOCACHE
    NOORDER;

-- Format date in mysql
SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%d_%m_%Y');


//Examples of id today
10_12_2016_1
10_12_2016_2
10_12_2016_3
...

//Examples of id yesterday
09_12_2016_1
09_12_2016_2
...

你明白我想要什么吗?

最佳答案

您可以编写自己的org.hibernate.id.SequenceGenerator。进入 generate(...) 可以调用您的 SELECT 并构建标识符。该代码仅是一个想法,不可复制粘贴。

public class DirectDebitSequenceGenerator
    extends SequenceGenerator
{
    @Override
    public Serializable generate(SessionImplementor session, Object obj)
    {
        // Your code
    }
}

实体:

public class Entity {

@Id
@GeneratedValue(strategy = "GenerationType.SEQUENCE", generator = "generator")
@GenericGenerator(name = "generator", strategy = "...DirectDebitSequenceGenerator")
private String id;

...

}

关于java - 在 MySQL 中使用数字创建序列日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074887/

相关文章:

java - hibernate createQuery() 准备语句

java - org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name 'bookDaoImpl'

java - 在 Java 中创建线程可能是一个瓶颈吗?

mysql - WordPress - 列出类别的层次结构,每个类别下都有帖子

php - 如何使用 PHP 验证 Android 应用程序是否正在请求 a.php?

mysql查询如何获取一周内的商品数量

Hibernate异常: Flush during cascade is dangerous

java - 分析 volatile 上下文中 JIT 生成的 x86 输出

java - 访问Java中的其他类文件

java - 如何将旧数据移入ArrayList?