2013-02-27 45 views
0

我使用Spring 3和Hibernate 4JPA/Hibernate的主键值顺序使用当年

我在实体类

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

下面我将值插入数据库表中,是否有可能插入PROJECT_NO值,它是以下格式的主键

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

我怎样才能做到这一点使用JPA/Hibernate的

回答

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

+0

我会尝试一类的这种战略方式。谢谢n1ckolas – user75ponic 2013-02-27 09:51:08

+0

并且在您尝试过之后(if)它可以正常工作,一定要检查这个答案! – arcy 2013-02-27 11:46:26

+0

@Polppan为你做这个工作? – n1ckolas 2013-02-28 10:44:00

1

怎么样把吸气剂的JPA注释和使用getter方法,只要你喜欢格式化的数据?

@Entity 
public class MyClass { 
private String projectNumber; 

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

类似的东西应该工作。