我想为 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/