앱 엔진에서 먼저 가져 오지 않고 Key로 엔티티를 삭제하십시오 (JDO 사용)

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

문제

데이터 스토어에서 먼저 가져올 필요없이 엔티티를 삭제하는 방법이 있습니까? 엔티티의 키나 ID가 이미 있다고 가정합니다. 나는 같은 것을 생각하고있다 deleteObjectById 그것은 아날로그 일 것입니다 getObjectById ~에 PersistenceManager.

내가 생각할 수있는 가장 가까운 것은 사용하는 것입니다 Query.deletePersistentAll() (본 것처럼 여기) 및 키에 의존하는 쿼리를 지정하지만, 엔티티를 삭제하기 전에 엔티티를 가져올 것인지 알 수 없습니다.

감사해요

편집 : 낮은 레벨 API와 Python API를 사용 하여이 작업을 수행하는 방법을 알고 있습니다. JDO 층 내에 수행 할 방법이 있는지 궁금합니다.

도움이 되었습니까?

해결책

Datanucleus는 내 질문에 대답했습니다 Google 그룹:

설마. 문제는 객체가 관계를 가질 수 있다는 것입니다. 따라서 캐스케이드 작업을 유발할 수 있으므로 일반적으로 먼저 메모리에로드되어야합니다. 메모리에로드 할 필요가없는 유일한 상황은 삭제 될 객체의 클래스에 관계가없는 경우였습니다.

낮은 레벨 API로 들어가서 물체를 폭파하면 관련 객체에 영향을 미치지 않을 수도 있습니다.

다른 팁

나는 JDO에 대해 잘 모르겠지만 파이썬의 경우 작은 해킹으로 가능합니다. 동일한 키로 새 인스턴스를 "작성"한 다음 삭제해야합니다. 데이터베이스에 한 번만 누르게됩니다.

instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()

사용하는 것은 어떻습니까 저수준 API?

제 생각에는 DataService.delete(Key) 필요한 것을 정확히 할 것입니다.

Key로서 Long을 사용하는 경우 Keymaker를 사용하여 먼저 키를 만듭니다.

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top