0

我正在使用 Spring 3 和 Hibernate 4

我在实体类中有以下内容

    @Id
    @Column(name = "PROJECT_NO")
    private String projectNumber;

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

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

如何使用 JPA/Hibernate 实现这一点

4

2 回答 2

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

于 2013-02-27T08:44:52.687 回答
1

将 JPA 注解放在 getter 上,并使用 getter 方法按您的喜好格式化数据怎么样?

@Entity
public class MyClass {
 private String projectNumber;

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

像这样的东西应该工作。

于 2013-02-27T08:42:51.877 回答