2015-10-05 5 views
1

Это поле "auftragsnummer" всегда остается пустым, даже если он помечается @GeneratedValue:Hibernate GeneratedValue использованием GenericGenerator игнорируется

@Entity 
public class Auftrag implements Serializable 
{ 
    @Id 
    @GeneratedValue 
    private int id; 

    @Pattern(regexp = AUFTRAGSNUMMER_REGEXP, message = "{validator.auftragsnummer}") 
    @Length(min = 20, max = 20) 
    @GenericGenerator(name = "sequence_auftragsnummer", strategy = "de.software.AuftragsnummerGenerator") 
    @GeneratedValue(generator = "sequence_auftragsnummer") 
    @Column(unique = true, nullable = false) 
    private String auftragsnummer; 
} 

Я храню его с помощью getHibernateTemplate().persist(t). Ссылочный класс генератора реализует org.hibernate.id.IdentifierGenerator. Я понятия не имею, почему это игнорируется.

Окружающая среда:

  • Hibernate 5.0.1
  • Spring 4.2.1
  • Java 7
  • DB2 10

ответ

1

JPA только предписывает поддержку @GeneratedValue на @Id поля.

Если ваш номер заказа не зависит от первичного ключа сущности, то самым простым решением является использование @PrePersist, например.

@PrePersist 
public void onCreate() { 
    auftragsnummer = ...; 
} 
+0

Спасибо, я попробую! –

+0

@ MichaelBöckling и это сработало? – msparer

+0

Он работает, но из-за устаревшего кода он еще не мог переключиться на него - но мы определенно должны. Отметьте свой ответ как правильный. –

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