使用当前年份的JPA / Hibernate主键值序列

时间:2013-02-27 08:32:50

标签: java spring hibernate jpa-2.0

我正在使用Spring 3和Hibernate 4

我在实体类

中有以下内容
    @Id
    @Column(name = "PROJECT_NO")
    private String projectNumber;

当我将值插入数据库表时,是否可以按以下格式插入PROJECT_NO值作为主键

20131其中2013年是当前年份,下一个字符应逐一增加。即要插入的下一个值应为20132

如何使用JPA / Hibernate实现此目的

2 个答案:

答案 0 :(得分:3)

您必须查看@GeneratedValue@GenericGenerator注释。

有几种可能产生价值。在您的情况下,我相信您需要创建以下内容:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "year_gen")
@GenericGenerator(name = "year_gen", strategy = "com.example.generator.CustomGenerator")
@Column(name = "PROJECT_NO")
private String projectNumber;

CustomGenerator应该实施org.hibernate.id.IdentifierGenerator

答案 1 :(得分:1)

如何将JPA注释放在getter上并使用getter方法根据需要格式化数据?

@Entity
public class MyClass {
 private String projectNumber;

 @Column(name = "PROJECT_NO")
 public String getProjectNumber(){
  return doSomeFormatting(this.projectNumber);
 }
}

这样的事情应该有用。