Android ORMLite在保存或不刷新时未设置外部
导言 我有两个实体: 叛徒Android ORMLite在保存或不刷新时未设置外部,android,ormlite,Android,Ormlite,导言 我有两个实体: 叛徒 @DatabaseTable(tableName = "traitement", daoClass = TraitementNettoyageDAO.class) public class TraitementEntity implements Parcelable { @DatabaseField(generatedId = true) private int id; @ForeignCollectionField(eager = tru
@DatabaseTable(tableName = "traitement", daoClass = TraitementNettoyageDAO.class)
public class TraitementEntity implements Parcelable {
@DatabaseField(generatedId = true)
private int id;
@ForeignCollectionField(eager = true)
private Collection<AnomalieNettoyageEntity> mListAnomalieNettoyage;
public TraitementEntity() {
}
// omitting getter/setter and parcelable job
}
实际上,我正在使用以下命令将我的文件保存到数据库中:
function void save(TraitementEntity obj){
for (AnomalieEntity n : obj.getmListAnomalie()) {
n.setTraitementForeign(obj);
}
create(obj);
}
问题
问题是,当我需要在本地数据库中保存我的traitement时,似乎我什么都没有:
Log.i("OBJECT ANOMALIE SIZE", obj.getmListAnomalie().size() + ""); // gives 3
save(obj);
List<TraitementEntity> liste = mServiceLocal.getAllLocalTraitements();
for (TraitementEntity n : liste)
Log.i("OBJECT ANOMALIE SIZE 2", n.getmListAnomalie().size() + ""); // gives always 0
/* This getmListeAnomalie() corresponds to the standard try/catch for queryForAll(), nothing else */
Log.i(“对象异常大小”,obj.getmListAnomalie().SIZE()+”);//给出3
保存(obj);
List liste=mServiceLocal.getAllLocalTraitements();
对于(TraitementEntity n:liste)
Log.i(“对象异常大小2”,n.getmListAnomalie().SIZE()+”);//给总是0
/*这个getmListeAnomalie()对应于queryForAll()的标准try/catch,没有其他内容*/
叛徒得到了很好的拯救,但外国的异象却没有。
所以它部分起作用了,我不知道为什么我会有这种行为
您能帮助我吗?您可以尝试将
foreignAutoCreate=true
设置为DatabaseField
注释,如下所示:
@DatabaseField(foreign = true, columnName = "traitementForeignId", foreignAutoRefresh = true, foreignAutoCreate = true, canBeNull = false)
以下是他们的解释:
将此设置为true(默认为false)将显示外部字段
如果ID字段不可用,则使用其内部DAO自动创建
设置(null或0)
确认问题
在他的TraitementEntity类中,不包含getmListAnomalie()方法
它与此不同:
for ( n AnomalieEntity : obj.getmListAnomalie ())
不会
for ( AnomalieNettoyageEntity n : obj.mListAnomalieNettoyage ()) {
n.setTraitementForeign ( obj) ;
}
其他选择。
在托管示例(SqlLite浏览器)中加载数据库SqlLite,并填充检查表
请确认,测试 您是否尝试过创建子项而不是父项,即尝试插入AnomalieEntity对象。如果我是对的,OrmLite应该自动插入叛逆者。
for ( AnomalieNettoyageEntity n : obj.mListAnomalieNettoyage ()) {
n.setTraitementForeign ( obj) ;
}