Language
エンティティの ForeignCollection を持つエンティティがありCountry
ます。
@ForeignCollectionField(eager = false, foreignFieldName = "language")
public ForeignCollection<Country> countries;
データベースに、たとえばフランスを代表する国を作成します。後で、その ID をクエリして取得し、これを Language の外国の国のコレクションに追加したいと考えています。
Country country = dbHelper.getCountryDao().queryForId(countryId);
if (country != null) {
country.language = language;
ForeignCollection<Country> countries = language.countries;
if (countries == null) {
countries = dbHelper.getLanguageDao().getEmptyForeignCollection("countries");
}
countries.add(country); // Illegal state exception thrown here
language.countries = countries;
dbHelper.getLanguageDao().create(language);
}
ただし、マークされた行countries.add(country)
により、不正な状態の例外がスローされます。
01-27 13:39:19.112: E/AndroidRuntime(15614): 原因: java.sql.SQLException: データベースへの挿入に失敗しました: INSERT INTO
countries
(identifier
,name
,language_id
) 値 (?,?,?) 01-27 13:39 :19.112: E/AndroidRuntime(15614): at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
.add()
がデータベースと内部 DAO に存在するエンティティの再作成をトリガーするのはなぜですか? そして、代わりに何をすべきですか?