4

オブジェクトのリストをQuestion含むクラスがありAnswerます。私のPOJOでは、これを質問クラスで次のように表します。

@ForeignCollectionField 
private ForeignCollection<Answer> answers;

私のAnswerクラスでは、この関係は次のように宣言されています。

@DatabaseField(foreign = true, canBeNull=false)
private Question question;

データベースにまだ永続化されていないAnswerを参照するを永続化しようとすると、ORMliteが例外をスローすることを期待していました。Questionただし、これは発生していないようです。Answer参照されているオブジェクトを保存せずに、オブジェクトを好きなように永続化できQuestionます。Answerを使用してデータベースを調べ、質問が保存されずに保存されていることを確認しましたSQLliteBrowser。これにより、プログラムを再起動すると、データベースに存在しない質問を参照する回答が含まれるようになるため、データの整合性が失われます。

これを強制する方法はありますか?Hibernateでの私の経験では、最初に参照された「親」オブジェクトを保存せずに子オブジェクトを保存することはできません。

4

1 に答える 1

7

以下をフィールドに追加するcolumnDefinitionと、参照する外部IDが存在しない場合、オブジェクトを作成できなくなります。

@DatabaseField(foreign = true, canBeNull=false,
     columnDefinition = "integer references question(id) on delete cascade")
private Question question;

他のスレッドも参照してください:SQLiteの下でORMLiteに外部キー制約を作成する

于 2012-11-02T08:41:52.687 に答える