使用 GenericGenerator 的 Hibernate GeneratedValue 被忽略

Hibernate GeneratedValue using GenericGenerator is ignored

此字段 "auftragsnummer" 始终保持为空,即使它使用 @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)存储它。引用的生成器 class 实现了 org.hibernate.id.IdentifierGenerator。 我不知道为什么它被忽略了。

环境:

JPA 仅强制支持 @Id 字段上的 @GeneratedValue

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

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