我有兩個類擁有一對多的關係。父母是Map,孩子是POI(興趣點)。我正在嘗試將POI添加到現有地圖,但是當我試圖保留更改時發生異常。這裏有兩類:如何使用App Engine將子對象添加到父級?
@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()加(POI);」拋出一個異常說「java.lang.ClassCastException:java.lang.Long」,但不告訴我爲什麼。如果我切換到「poi.SetMap(map);」它只是默默地失敗。沒有錯誤信息,沒有任何反應。
有人知道如何正確處理App Engine中的一對多關係嗎?有人知道任何好的資源嗎? Google's documentation一直很有幫助,但它真的很缺乏。
POI =興趣點,如帖子第二句所定義:) – 2009-08-02 20:49:43
另外,海報使用的是JDO,而不是JPA,它們相似但不相同。 – 2009-08-02 20:56:28