「一時的なIDがコミットで置き換えられていない」をCayenneで解決する方法

StackOverflow https://stackoverflow.com/questions/4784929

  •  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() 方法。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top