使用hbm2ddl创建ID和DB方案的共享序列生成器

Vla*_*mir 5 hibernate hbm2ddl

所有.我有通过hbm2ddl生成DB方案的问题.我想对所有私钥使用共享序列生成器.所以我在某个实体中定义了一次.

@Entity
@SequenceGenerator(name = "MY_SEQUENCE_GENERATOR", sequenceName = "MY_SEQ")
public class MyEntity implements Serializable {
 ....
}
Run Code Online (Sandbox Code Playgroud)

然后我想对所有id使用这个序列生成器.

public class SomeEntity1 implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "MY_SEQUENCE_GENERATOR")
  Long id;     
  ....
}

public class SomeEntity2 implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "MY_SEQUENCE_GENERATOR")
  Long id;     
  ....
}
Run Code Online (Sandbox Code Playgroud)

当我运行hbm2ddl ant任务时,我得到一个异常:

[hibernatetool] javax.persistence.PersistenceException: org.hibernate.AnnotationException: Unknown Id.generator: MY_SEQUENCE_GENERATOR
[hibernatetool] org.hibernate.AnnotationException: Unknown Id.generator: MY_SEQUENCE_GENERATOR
Run Code Online (Sandbox Code Playgroud)

这是一个问题还是我做错了什么?

for*_*ker 0

序列导入,即@SequenceGenerator注释应该出现在所有类中。因此,使用此注释创建一个抽象类并从中扩展所有实体:

@SequenceGenerator(name = "MY_SEQUENCE_GENERATOR", sequenceName = "MY_SEQ")
public abstract class BaseEntity implements Serializable {
 ....
}

public class SomeEntity1 extends BaseEntity {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "MY_SEQUENCE_GENERATOR")
  Long id;     
  ....
}

public class SomeEntity2 extends BaseEntity {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =  "MY_SEQUENCE_GENERATOR")
  Long id;     
  ....
}
Run Code Online (Sandbox Code Playgroud)