2013-02-27 7 views
0

Я использую Spring 3 и Hibernate 4JPA/Hibernate последовательность первичного ключа с использованием текущего года

У меня есть следующие в Entity класса

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

Когда я вставить значения в таблицу базы данных, возможно вставить значение PROJECT_NO, которое является Первичным ключом в следующем формате

20131, где 2013 год - текущий год, а следующий символ должен быть инкрементальным на единицу. то есть следующее значение для вставки должна быть 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

+0

И после того, как вы попробовали и (если) это работает, обязательно проверьте это как ответ! – arcy

+0

@ Polppan делает это для вас? – n1ckolas

1

насчет сдачи аннотации JPA на поглотителе и с использованием методы геттера для форматирования данных, как вам нравится?

@Entity 
public class MyClass { 
private String projectNumber; 

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

Нечто подобное должно работать.

Смежные вопросы