2012-04-11 10 views
1

私はappengineでobjectify 3.1を使用していて、先祖クエリを実行しようとしています。私は、特定の種類のオブジェクトのすべての子を取得したいです。以下は私のコードです:Objectifyを含む先祖クエリが結果を返さない

@Cached 
@Entity 
public class Car { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 

private String make; 
private String model; 

}

@Cached 
@Entity 
public class Tire { 

@Id 
public String keyName; 


@Parent Key<Car> car; 

private String brand; 
private String size; 

}

私のクエリは、このコードです:

 List<Tire> list= ofy.query(Tire.class).ancestor(new Key<Car(Car.class,carID))).list(); 

私は私が設定するには、このコードを使用するタイヤのオブジェクトを作成する場合関係:

 newTire.setCar(new Key<Car>(Car.class,Car.getID())); 

私は、データストアの管理者にそれを照会することができますので、親子関係が存在しているはず、それは、復号エンティティキーの親を示しています

Decoded entity key: Car: id=135172 > Tire: name=myCarUniqueID 

このクエリは、常に0の結果を返し、それはのように思えます私は客観化ウェブサイト上のすべてのベストプラクティスに従ってきました。どんな助けもありがとう!

+0

どのDepartmentPersonnelInfoクラスがこの質問に関係していますか?それとも、それはタイヤクラスであるはずですか? – alex

+0

はい、それはタイヤクラスと思われていました。それは修正されました – Patrick

+1

あなたの例では何も間違って見えないので、ここには表示されていない何かが起こっているはずです(手入力からの様々なタイプミスを除く)。データストアの管理ページから、GQLで同等の祖先クエリを実行してみてください。 – stickfigure

答えて

2

あなたのコードは大丈夫ですので、間違っている可能性があるのは、存在しないのはcarIDです。

サイトに掲載されているObjectify javadocは、実際には、今後のObjectify 4のトランクバージョン用です。ご覧になる必要があるのは、Objectify 3.1 javadocです。このバージョンのクエリはfetch()です。

また、@GeneratedValuenot an Objectify annotationです。

+1

問題は、長いID ...の代わりにString IDを渡していたことです。問題は解決しました。だから、あなたは正しいです! – Patrick

関連する問題