2012-03-15 3 views
0

複合プライマリ・キーを持つoracle DB表を更新するために、primefaces 3.2のセル内編集コンポーネントを使用しています。ユーザーは、主キーの値を編集することができるはずですが、私は複合プライマリ・キーを持つ表のセル内編集プライム・インタフェース

em.merge(entity); 

を使用している場合、このように私は私には合理的に聞こえる次のエラー

Exception [EclipseLink-7251] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.ValidationException 
Exception Description: The attribute [voce] of class [entity.competenze_distaccati.CompetenzeDistaccatiPK] is mapped to a primary key column in the database. Updates are not allowed. 

を...得ました。質問は次のとおりです。ユーザーに主キー値も変更できるようにするにはどうすればよいですか? rowEditイベントリスナーが変更された値で呼び出されるため、削除挿入を実行する元のレコードがどれか分かりません。

答えて

2

主キーの変更を許可することが正しくないデータを処理する方法。代わりに、削除を許可し、必要な値でレコードを再度追加します。このようにして、あなたは基準を守り、あなたの問題は解決されます。

+0

あなたのアドバイスを使っても、ユーザーはまだpkを変更することができましたが、変更されたレコードのリストはすぐにdbにコピーされません。このようにして、私はコミットする:listOfRecordToRemove = listFromDB.removeAll(listEdited)while listOfRecordToInsert = listEdited.removeAll(listFromDB)。更新するレコードのみを知るために、私はrowEditイベントリスナーによって設定されたHashSetを持っています。それは私のために働いています。 – maxqua72

関連する問題