所有。我有通过hbm2ddl生成DB方案的问题。 我想对所有私钥使用共享序列生成器。所以我在某个实体中定义了一次。
@Entity
@SequenceGenerator(name = "MY_SEQUENCE_GENERATOR", sequenceName = "MY_SEQ")
public class MyEntity implements Serializable {
....
}
然后我想对所有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;
....
}
当我运行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
这是一个问题还是我做错了什么?
答案 0 :(得分:2)
这个问题的解决方案是在package-ingo.java文件中定义共享的@SequenceGenerator for package是我放置的实体。
答案 1 :(得分: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;
....
}