gpt4 book ai didi

java - ORMLite : Internal DAO object is null

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:42 25 4
gpt4 key购买 nike

我正在使用 ORMLite,尝试使用 ForeignCollectionKey 但出现以下错误:

Internal DAO object is null. LazyCollections cannot be used if they have been deserialized.

我有一个名为 Zone 的对象:

public class Zone implements Serializable {

private static final long serialVersionUID = 1L;
public static final String ZONE_ID = "id";
public static final String ZONE_PARENT_ID = "parentZoneId";

@DatabaseField(generatedId=true)
private int id;
@DatabaseField()
String name;
@DatabaseField(foreign=true, foreignAutoRefresh = true)
Zone parentZone;

@ForeignCollectionField(foreignFieldName = "parentZone", eager = true)
private ForeignCollection<Zone> zoneChild;

public Zone() {
// TODO Auto-generated constructor stub
}
public ForeignCollection<Zone> getZoneChild() {
return zoneChild;
}
public void setZoneChild(ForeignCollection<Zone> zoneChild) {
this.zoneChild = zoneChild;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

在一个类中,我正在执行一个递归方法来获取我所有的区域子对象:

public void getZone(Zone zone, Dao<Zone, Integer> tempZoneDao){
ZoneListEntity zoneEntity = new ZoneListEntity();
zoneEntity.setName(zone.getName());
zoneEntity.setNiveau(0);
zoneEntity.setZone(zone);
mainZoneList.add(zoneEntity);

List<Zone> childList = new ArrayList<Zone>(zone.getZoneChild());
//set rootZone's children as ZoneListEntity
for(Zone currentZone : childList){
ZoneListEntity zoneGroup = new ZoneListEntity();
zoneGroup.setName(currentZone.getName());
zoneGroup.setZone(currentZone);
System.out.println("Zone : "+currentZone.getName());
getZone(currentZone, tempZoneDao);
}
}

当我第一次进入我的 getZone 时,一切顺利。然后当我在 getZone 中循环时,应用程序崩溃试图访问子区域:

List<Zone> childList = new ArrayList<Zone>(zone.getZoneChild());

你有什么想法吗?我的模型构造正确吗?谢谢

最佳答案

Do you have any ideas ? Is my model construction right ? Thanks

所以异常消息试图解释发生了什么。我不确定如何改进它。

Internal DAO object is null. LazyCollections cannot be used if they have been deserialized.

您正在尝试访问 zoneChild,它是一个已被反序列化的 ForeignCollection。由于它已被反序列化,因此无法重新建立所有底层数据库配置和连接。我想当它存储在 Android Bundle 中时会发生这种情况吗?我不确定这是否是唯一的情况。

如果您需要获取 Zone 子级,您将不得不在 您之后的实体上调用 dao.refresh()通过执行 zoneDao 对其进行反序列化或自行查询。

关于java - ORMLite : Internal DAO object is null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com