Java 忽略使用GenericGenerator的Hibernate GeneratedValue

Java 忽略使用GenericGenerator的Hibernate GeneratedValue,java,hibernate,db2,Java,Hibernate,Db2,此字段“auftragsummer”始终保持为空,即使它用@GeneratedValue注释: @Entity public class Auftrag implements Serializable { @Id @GeneratedValue private int id; @Pattern(regexp = AUFTRAGSNUMMER_REGEXP, message = "{validator.auftragsnummer}") @Length(min =

此字段“auftragsummer”始终保持为空,即使它用@GeneratedValue注释:

@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
  • 春季4.2.1
  • 爪哇7
  • DB210

JPA仅要求支持
@Id
字段上的
@GeneratedValue

如果您的订单号不依赖于实体的主键,那么最简单的解决方案是使用
@PrePersist
,例如

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

谢谢,我会试试的!它可以工作,但由于遗留代码,它还不能切换到它-但我们肯定应该。把你的答案标记为正确。