2017-02-27 3 views
3

なぜオブジェクト化エンティティのリストのインデックスを解除できないのですか?Objectifyでリストのインデックスを解除するには?

私は簡単なサンプルプロジェクトを作成しました。

Iは、エンティティオブジェクト

public class Passenger { 
    String name; 
} 

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

を使用し、この簡単な方法を使用して保存しました。乗客のフィールドは、それがインデックス化される注釈@Unindexを持っているが、1はGoogleの「データストアで見ることができるよう、

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

どのようにエンティティを保存しましたか?オブジェクト化したり、クラスエンティティを使用しましたか? –

答えて

1

これはObjectifyとは無関係であり、データストアのいくつかの新しい特徴であるようです。これは、UIのディスプレイの不具合にすぎません。それは問題を引き起こしていますか?

あなたが投稿したコードでは、Objectifyはフィールド(@Unindexアノテーションなし)でEntity.saveUnindexedProperty()を呼び出します。しかし、Objectifyがそれを索引付けしようとしたとしても、歴史的には埋込みオブジェクトを索引付けすることはできません。そのため、索引付けの意味は不明です。たぶんGoogleはいくつかの新しい動作を展開しており、GUIはまだ正しく動作していない可能性がありますか?あるいは、保存行動にバグがありますか?

低レベルのAPI(List<EmbeddedEntity>のプロパティを含むEntity)を使用して簡単なテストケースを作成し、この同じ現象が発生することを確認し、GAEの問題にバグを報告してくださいトラッカー。

+0

私の場合、* Passenger *は埋め込みオブジェクトではありません。 –

+0

その後、投稿したものとまったく異なるコードを使用している必要があります。フィールドが 'List 'の場合、埋め込みオブジェクトのリストがあります。 – stickfigure

+0

オハイオ州申し訳ありません私は用語*埋め込み*と*入れ子*を混在させた。 ** **乗客**は埋め込まれていますが、入れ子になっていません。 –

関連する問題