0

ユーザーがデータを挿入する Web フォームがあります。次に、データベースに格納されます。しかし、db のレコードに問題があります。spring 3、jpa、eclipselink、mysql を使用しています。エンティティで @Id が生成されます。戦略を使用すると: GenerationType.AUTO、GenerationType.TABLE データが保存されず、エラー:
例外 [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException Internal Exception : java.sql.SQLException: ベース テーブルまたはビューが見つかりません。サーバーからのメッセージ: 「テーブル 'sklep.sequence' が存在しません」 エラー コード: 1146 呼び出し: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?bind => [2 つのパラメーターがバインドされている]
GenerationType.IDENTITY、GenerationType.SEQUENCEを使用すると、最初のデータのみが保存され、次に: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence .exceptions.DatabaseException 内部例外: java.sql.SQLException: null、サーバーからのメッセージ: 「キー 'PRIMARY' のエントリ '0' が重複しています」 エラー コード: 1062
何が起こっていますか? これはmysqlか何かの問題ですか?ヘルプ!ありがとう!

4

1 に答える 1

1

TABLE id 生成を使用する場合は、テーブル SEQUENCE を作成する必要があります。EclipseLink を使用して DDL を生成すると、自動的に作成されます。また、ジェネレーター名ごとに行を挿入する必要があります。

IDENTITY ID を生成するには、テーブルを作成するときに ID に IDENTITY タイプを使用する必要があります。

http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Sequencingを参照してください 。

于 2013-07-18T13:14:23.003 に答える