0

シーケンスに奇妙な問題があります。geronimo 2.2 で postgresql 9 を使用しています。db 環境内でシーケンスPLANTS_ID_SEQを作成しました。新しいエンティティを作成しようとすると、ログ (postegresql に由来する) に関係PLANTS_ID_SEQが存在するというエラーが表示されます。すでに作成されているシーケンスを作成しようとしているようです。これはエンティティ Bean のコードです。

@Id 
@GeneratedValue(generator="PLANTS_SEQ",strategy=GenerationType.SEQUENCE) @SequenceGenerator(name="PLANTS_SEQ", sequenceName="PLANTS_ID_SEQ",allocationSize=1) @Column(name = "ID") 
private Integer id; 

シーケンス名を変更すると ( eg sequenceName="MY_SEQ")、コードは正しく実行されますが、postgresql で MY_SEQ シーケンスが作成されます (明らかに使用されます)。誰かがこのケースについて手がかりを持っている場合は、共有してください. ありがとうジョージ

4

2 に答える 2

1

テーブルに SERIAL 型の列がある場合、postgres はシーケンスを作成し、挿入時に自動的に使用します。

作成するシーケンスの名前は「tablename_id_seq」です...

おそらく、postgres が既に行ったことを複製し、複製シーケンスを作成しようとしているのでしょう。

于 2011-05-11T21:25:39.457 に答える
0

解決済み:persistence.xml に次のプロパティを追加する必要があります。

property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(Sequences=false)" 

このように、openjpa の MappingTool はシーケンスを再度作成しようとしません。

于 2011-05-15T13:35:07.923 に答える