JBoss 6.0 にデプロイされた J2EE アプリケーションで休止状態を使用しています。私のデータベースは Oracle 11i と Derby です。主キー (シリアル ID を実行) を生成するために、エンティティ (PersonDTO) の 1 つで @TableGenerator アノテーションを使用します。
@Entity
@Table(name = "EDIS_PERSON")
public class PersonDTO {
@Id
@TableGenerator(name="TABLE_GEN",
table="EDIS_SEQUENCE", pkColumnName="SEQ_NAME",
valueColumnName="SEQ_COUNT",
pkColumnValue="PERSON_ID", allocationSize = 5)
@GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
private long id;
.
.
.
そして、シーケンスに必要なエンティティを定義しました-次のように:
@Entity
@Table(name = "EDIS_SEQUENCE")
public class EdmSequenceDTO {
@Id
private String SEQ_NAME;
private long SEQ_COUNT;
.
.
.
シーケンス生成に関する限り、すべてが正常に機能します。しかし、エンティティの作成中 (J2EE アプリを初めてデプロイするとき)、JBoss server.log ファイルに次のエラーが表示されますが、すべてのエンティティ/テーブルは最終的に正常に作成されます。
14:04:16,817 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] Unsuccessful: create table EDIS_SEQUENCE ( SEQ_NAME varchar(255), SEQ_COUNT integer )
14:04:16,817 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] Table/View 'EDIS_SEQUENCE' already exists in Schema 'EDM'.
14:04:16,818 INFO [org.hibernate.tool.hbm2ddl.SchemaUpdate] schema update complete**
これは実際には「エラー」ではないと思います。2 つのエンティティ Bean の一部として参照しているためEDIS_SEQUENCE
、休止状態が 2 回作成しようとしています。1 つ目は EdmSequenceDTO がデプロイされたとき、2 つ目は PersonDTO がアノテーションEDIS_SEQUENCE
の一部として参照するときです。@TableGenerator
私のpersistence.xml
ファイルにはhibernate.hbm2ddl.auto
、value="update" のプロパティがあります。「create-drop」の代わりにこの値が必要です。
休止状態によって報告されたエラーを回避する方法はありますか?