「一時的なIDがコミットで置き換えられていない」をCayenneで解決する方法
-
24-10-2019 - |
質問
Apache Cayenneのコンテキストに変更を犯すと、次のような例外が得られます。
org.apache.cayenne.CayenneRuntimeException: [v.3.0.1 Sep 06 2010 15:09:38]
Temporary ID hasn't been replaced on commit
なぜこの例外が発生するのですか?
解決
Cayenneが永続的なIDを生成する方法を知らないオブジェクトをコミットしようとしています。これは通常、基礎となるテーブルに一次キーが定義されていない場合に発生します。
問題を解決するには、次のいずれかを実行します。
- 下にあるテーブルにプライマリキーを追加します。サロゲートキー(新しい生成されたID列)またはナチュラルキー(既存の列の組み合わせ)のいずれかを追加します。
- 次のように、問題のオブジェクトに独自の永久IDを設定します
PersistentObject.setObjectID()
方法。
所属していません StackOverflow