我有一个拥有一对多关系的两个班级。父亲是地图,孩子是POI(兴趣点)。我正在尝试将POI添加到现有Map中,但是当我尝试保留更改时出现异常。以下是两个类:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Map {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent(mappedBy = "map")
private List<Poi> pois;
public List<Poi> getPois() {
return pois;
}
}
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Poi {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private Map map;
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
}
以下是我尝试使用它们的方法:
PersistenceManager pm = PMF.get().getPersistenceManager();
// create a new POI
Poi poi = new Poi();
// find the Map by its ID
Map map = pm.getObjectById(Map.class, Long.decode(mapId));
// add the POI to the map
map.getPois().add(poi);
// persist!
pm.makePersistent(map);
pm.close();
“map.getPois()。add(poi);”抛出一个异常,说“java.lang.ClassCastException:java.lang.Long”,但不告诉我原因。如果我把它切换到“poi.SetMap(map);”它只是默默地失败了。没有错误消息,也没有任何反应。
有人知道如何正确处理App Engine中的一对多关系吗?有人知道有什么好的资源吗? Google's documentation一直很有帮助,但确实缺乏。
答案 0 :(得分:0)
我不确定你的地图是最好的抽象。我不知道Poi是什么。谷歌告诉我它是夏威夷食物。
但Google也向我展示了how to do a one-to-many unidirectional relationship JDO。我在代码中看不到任何一对多的注释。那是你想要做的吗?如果是这样,也许这就是你所缺少的。
答案 1 :(得分:0)