2017-02-27 8 views
3

objectify 엔티티의 목록을 색인 해제 할 수없는 이유는 무엇입니까?Objectify에서 목록의 색인을 해제하는 방법은 무엇입니까?

문제를 설명하기 위해 간단한 예제 프로젝트를 만들었습니다.

I는 엔티티 객체

public class Passenger { 
    String name; 
} 

@Entity 
public class Car { 
    @Id String id; 
    @Unindex List<Passenger> passengers; 
} 

사용이 간단한 방법을 사용하여 저장. 승객 필드가 색인됩니다 주석 @Unindex을 가지고 있지만 하나는 구글에서 "데이터 저장소에서 볼 수 있듯이,

This is a screenshot from the Datastore

:

public class CarFactory { 

    public void writeCarEntity() { 
     Car car = new Car(); 
     car.setId("myCar"); 

     List<Passenger> passengers = new LinkedList<Passenger>(); 

     Passenger carl = new Passenger();  
     carl.setName("Carl"); 

     Passenger pete = new Passenger(); 
     pete.setName("Pete"); 

     Passenger jeff = new Passenger(); 
     jeff.setName("Jeff"); 

     passengers.add(carl); 
     passengers.add(pete); 
     passengers.add(jeff); 

     car.setPassengers(passengers); 

     ObjectifyService.register(car.getClass()); 
     ObjectifyService.ofy().save().entity(car).now(); 
    } 
} 

는이 정보를 데이터 저장소에있는 개체를 찾고 있습니다 ". 주석 @Unindex은이 예제에서 효과가 없습니다.

+0

데이터 저장소에서 캡쳐 화면을 게시 할 수 있습니다 –

+0

@MichaelMeyer 물론, 원래 게시물에 추가했습니다 ..... –

+0

엔티티를 어떻게 저장 했습니까? objectify를 사용하거나 Entity 클래스를 사용 했습니까? –

답변

1

이것은 Objectify와 관련이 없으며 데이터 저장소의 새로운 특징입니다. UI에서 디스플레이 결함 일 수 있습니다. 문제가 발생 했습니까? 당신이 게시 코드, 객관화가 (심지어 @Unindex 주석 제외) passengers 필드에 Entity.saveUnindexedProperty()를 호출와

. 그러나 Objectify가 인덱스 작성을 시도 했더니 역사적으로 임베디드 오브젝트를 인덱스 할 수 없기 때문에 오브젝트 인덱스를 색인하는 것이 무엇을 의미하는지 명확하지 않습니다. 어쩌면 Google이 새로운 행동을 펼치고 있으며 GUI가 제대로 작동하지 않았을 수 있습니까? 아니면 저장 행동에 버그가있을 수 있습니까?

좋은 시민이 되려면 낮은 수준의 API (List<EmbeddedEntity> 유형의 속성이 포함 된 Entity)를 사용하여 간단한 테스트 사례를 만들고 동일한 문제가 발생하는지 확인하고 GAE 문제에 버그를 신고하십시오 트래커.

+0

제 경우에는 * Passenger *가 내장 된 개체가 아닙니다. –

+0

그러면 게시 한 코드와 완전히 다른 코드를 사용해야합니다. 'List '타입의 필드를 가지고 있다면, 당신은 임베디드 객체들의리스트를 가지고 있습니다. – stickfigure

+0

오, 미안 해요 * 임베디드 *와 * 중첩 된 * 용어를 섞어. 따라서 ** 승객 **은 내장되어 있지만 중첩되어 있지 않습니다. –