2011-02-17 2 views
0

私は現在、MySQL DBに基づいた最初のJavaアプリケーションを開発中です。私はEclipseLink2.0とNetBeansを使用しています。私は説明できない動作に直面しています。誰かがこの問題を偶然見つけて、これを手伝ってくれるかもしれません。表1の表2のPKはFkである。アプリケーション側には、ユーザーがテーブル1のコンテンツを生成できるUIがあります.fk(Table2ID)の値はドロップダウンメニューで選択され、table2行のCollectionを読み込んで各値を取得します。今、別の(すでに存在する)値にfkの値を変更しようとすると、その代わりに新しいIDを持つ新しい行がtable2に生成され、他のすべての列の値は試行した行からクローンされますFkをに変更してください。たとえば、table1行3,4,5をtable1.fkcolumn = 6(つまりTable2ID = 6)に設定しようとすると、プログラムはID = 6の行を3回クローンし、各table1列を次のように設定します。それらの中の一つ。外部キーを変更すると新しい行になります

ご協力いただければ幸いです。

+1

エンティティマッピングを表示できますか?エンティティをリンクして保存するコントローラ/サービス内のコードも含まれます。 – Augusto

答えて

0

問題は、エンティティの主キーを変更することです。 EclipseLinkでは、エンティティのPKを変更すると、新しいエンティティが作成されます。そのため、Eclipselinkは新しい行を挿入し、古い行だけを残します。

これを回避するには、3つの選択肢があります。 1)データベースを変更します。主キーは実際には変更しないでください。 2)主キーの値を変更して再クエリする更新クエリを実行するようにアプリケーションを設定します。 3)古い行を削除し、新しい主キーで再作成します。

関連する問題