6

すべて。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

それは問題ですか、それとも私は何か間違ったことをしていますか?

4

2 に答える 2

2

この問題の解決策は、パッケージの package-ingo.java ファイルで共有 @SequenceGenerator を定義し、エンティティを配置することでした。

于 2011-10-11T08:34:57.877 に答える
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;     
  ....
}
于 2011-10-07T23:17:50.667 に答える