App Engine을 사용하여 부모에게 자식 객체를 추가하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1219449

  •  10-07-2019
  •  | 
  •  

문제

나는 소유 한 일대일 관계에 두 개의 수업이 있습니다. 부모는지도이고 자녀는 POI (관심 지점)입니다. 기존지도에 POI를 추가하려고하지만 변경 사항을 지속하려고 할 때 예외가 발생합니다. 다음은 다음과 같습니다.

@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);"로 전환하면 그것은 단지 조용히 실패합니다. 오류 메시지가 없으며 아무 일도 일어나지 않습니다.

앱 엔진에서 일대일 관계를 올바르게 처리하는 방법을 아는 사람이 있습니까? 좋은 자원을 아는 사람이 있습니까? Google의 문서 약간 도움이되었지만 실제로 부족합니다.

도움이 되었습니까?

해결책

가장 먼저 확인해야 할 것은 SDK의 버전 1.2.2를 사용하고 있다는 것입니다. 이것에서 많은 수정/향상이 아동/부모 기능에 이루어졌습니다. 풀어 주다. 하나 문제 그것은 당신의 문제와 매우 흡사하거나 적어도 관련된 고정 된 소리였습니다.

문제가 해결되지 않으면 위의 코드를 사용하는 클래스가 @PersistEnceCapable이 아니라고 가정하고 위의 코드를 사용하는 클래스가 주석이 있는지 확인하십시오.

만약에 저것 문제를 해결하지 못하고 문제를 일으키는 전체 클래스를 게시 할 수 있습니까 (예를 들어, 예를 들어, 예를 들어 오리지널 맵이 생성되는 것을 볼 수 없습니다. 그리고 저장했고, Mapid가 어디에서 왔는지 알 수 없습니다.

다른 팁

당신의지도가 여기서 최고의 추상화인지 확실하지 않습니다. 그리고 나는 Poi가 무엇인지 모르겠습니다. Google은 하와이 음식이라고 말합니다.

그러나 Google도 저를 보여줍니다 일대일 단방향 관계를 수행하는 방법 JDO와 함께. 나는 당신의 코드에서 하나에서 많은 주석을 보지 못합니다. 그게 당신이하려는 일입니까? 그렇다면 아마도 그것이 당신이 놓친 것일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top