2012-04-11 100 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的結果,它看起來像我遵循了objectify網站上的所有最佳實踐。任何幫助,將不勝感激!

+0

DepartmentPersonnelInfo類與該問題有什麼關係?或者那應該是輪胎課? – alex 2012-04-11 15:33:54

+0

是的,這是假設是輪胎類。它已被更正 – Patrick 2012-04-11 15:48:50

+1

必須有更多的事情在這裏沒有顯示,因爲在你的例子中沒有看起來錯了(除了手寫輸入的各種拼寫錯誤)。嘗試從數據存儲管理頁面在GQL中運行等效的祖先查詢。 – stickfigure 2012-04-11 16:02:51

回答

2

您的代碼看起來沒問題,所以唯一可能出錯的是不存在的carID

該網站上列出的Objectify javadoc實際上是中繼版本,這是即將到來的Objectify 4.您需要看的是Objectify 3.1 javadoc:該版本在查詢上有fetch()

另外,@GeneratedValuenot an Objectify annotation

+1

問題是我傳遞一個字符串ID而不是一個長ID ...問題解決了。所以,是的,你是對的! – Patrick 2012-05-03 16:54:17