사용자 (친구 목록)가 연결되어있는 사용자의 데이터베이스를 만들려고합니다. UserEntity (기본 필드 ID)와 FriendEntity 필드가있는 - initiatorId - 우정을 시작한 사용자의 ID입니다. - friendId - 초대 된 사용자의 ID입니다.Java GAE Datastore의 하위 쿼리
이제 특정 사용자의 모든 친구를 가져 오려고 시도하고 있으며 JDO에서 하위 쿼리를 사용하여 몇 가지 문제가 발생했습니다. SQL은 :
가 논리적으로 쿼리가 같은 것을해야한다 EXISTS UserEntity SELECT * FROM ((initiatorId == & & friendId == userId를) || (friendId == UserEntity을 UserEntity.id * FORM의 FriendEntity을 선택합니다. ID & & initiatorId == userId를 IN (일부 userId를))또는 UserEntity SELECT * * FriendEntity FROM WHERE initiatorId == UserEntity.id) OR FROM userId를 FriendEntity IN (SELECT * WHERE friendId == UserEntity.id)
그래서 JDOQL에서 마지막 쿼리를 복제하기 위해 나는 그는 다음 식을 구문 분석하는 동안 지원되지 않는 방법 : 결과에서
Query friendQuery = pm.newQuery(FriendEntity.class);
friendQuery.setFilter("initiatorId == uidParam");
friendQuery.setResult("friendId");
Query initiatorQuery = pm.newQuery(FriendEntity.class);
initiatorQuery.setFilter("friendId == uidParam");
initiatorQuery.setResult("initiatorId");
Query query = pm.newQuery(UserEntity.class);
query.setFilter("initiatorQuery.contains(id) || friendQuery.contains(id)");
query.addSubquery(initiatorQuery, "List initiatorQuery", null, "String uidParam");
query.addSubquery(friendQuery, "List friendQuery", null, "String uidParam");
query.declareParameters("String uidParam");
List<UserEntity> friends = (List<UserEntity>) query.execute(userId);
나는 다음과 같은 오류가 발생합니다.
누구든지이 쿼리를 도와 주시겠습니까?