0

다음은 설명입니다. 저는 두 개의 실체를 가지고 있습니다 : 집, 사람. 내 시스템에서는 한 사람이 여러 주택을 소유 할 수 있으며 한 집에는 여러 소유자가있을 수 있습니다. 그래서 HouseOwnership이라는 테이블 (일명 엔티티)을 만듭니다. 나는 HouseOwnership에 대한 쿼리의 두 가지 종류를 만들 수 있도록하려면 모든 그것의 소유자 얻을많은 관계에서 많은 관계로 엔티티에 액세스하는 방법

  • houseId을 감안할 때
  • personId 얻을 모든 집이 HouseOwnership에 대한 그래서

을 소유 감안할 때 나는

@Entity 
class HouseOwnership{ 
    @Load 
    private Ref<House> houseRef; 
    @Load 
    private Ref<Person> personRef; 
} 

가 어떻게 OfyService.ofy() 내 쿼리를 만들해야합니까?

내가 안넘어

owners =OfyService.ofy().load().type(HouseOwnership.class).ancestor(house).list() 

houses =OfyService.ofy().load().type(HouseOwnership.class).ancestor(person).list() 

하지만 내가이 @Parent에 모두 참고 문헌을해야 할 것입니다

. 그래서 그렇게 할 수 있습니까? 쿼리는 어떻게 작성합니까?

또한 실제 객체가 아닌 ID 만 가지고 있으므로 객체에서 ID를 만들 수 있어야합니다. 그러나 쉬운 방법이 있는지 궁금합니다.

답변

1
  1. 엔티티에는 단 하나의 상위 항목 만있을 수 있습니다.

  2. HouseOwnership 엔티티를 모든 엔티티의 하위로 만들 필요는 없습니다.

  3. houseRef 속성이 주어진 House 키 또는 personRef 속성이 주어진 Person 키와 같거나 둘 모두 인 HouseOwnership 엔터티를 가져 오는 간단한 쿼리를 만듭니다.

  4. 부모가없는 엔티티의 ID에서 언제든지 키를 만들 수 있습니다.

0

당신은 거의 이것을 House의 @Index Set<Ref<Person>> owners; 속성으로 모델링하고 싶습니다. 추가 관계 엔티티를 작성하면 많은 양의 오버 헤드가 발생합니다.

문자 그대로 관계형 모델에서 스키마를 매핑하지 마십시오. 문서 구조를 활용하십시오.