我有一个Language
带有 ForeignCollection 实体的Country
实体:
@ForeignCollectionField(eager = false, foreignFieldName = "language")
public ForeignCollection<Country> countries;
我在我的数据库中创建了一个国家,比如说代表法国。后来,我通过查询它的 id 来检索它,我想将它添加到语言的外国国家集合中:
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
) VALUES (?,?,?) 01-27 13:39 :19.112: E/AndroidRuntime(15614): 在 com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
为什么会.add()
触发重新创建存在于数据库和内部 DAO 中的实体?而我应该怎么做呢?