2014-12-11 3 views
0

Google App Engine 및 JDO 데이터 저장소를 사용하여 웹 서비스를 작성합니다.
모든 것이 잘 작동하며 조각들이 어떻게 잘 어울리는 지 잘 알고 있습니다. 내가 저장소의 소유되지 않은 관련 개체가 새로운 제품 클래스를 삽입하고
, 그것은 그 가게가 이미 존재하더라도 새 저장소 개체를 생성합니다 다음과 같이GAE 및 JDO를 사용하여 새 객체를 생성하는 것과 연결하는 것

나는 데 문제입니다.

json이 이미 존재하는 저장소 데이터와 함께 제출되면 새로운 ID로 복제 저장소를 만드는 대신 기존 저장소에 새 제품을 연결합니다.

@Unique(name = "STORE_COMPOSITE_IDX", members = {"key", "name"}) 나는 이름이 이미있는 경우 저장소에 연결되지만 작동하지 않는다고 생각하는 저장소 클래스에 추가를 시도했습니다.

어떻게 작동합니까?

답변

0

새 개체를 만들면 ID가 없으므로 "과도기"상태가됩니다. 이를 지속성 메커니즘에 전달하면 새로운 것으로 유지됩니다 (makePersistent의 인수로 또는 makePersistent에 전달 된 객체의 필드로).

기존 개체에 연결하려면 관련시킬 기존 개체 (pm.getObjectById)를 검색하고 새 개체의 필드를 그 개체로 설정해야합니다. 이 경우 검색된 개체는 PERSISTENT 또는 HOLLOW 상태가됩니다. 다른 객체를 지속하면 기존 객체를 찾아서 DB에 연결합니다.

개체 수명주기 상태를 읽습니다. JDO 사양 또는 괜찮은 JDO 문서의 모든 것 (그리고 GAE 문서는 "알맞은 JDO 문서"가 아닙니다)

관련 문제