2010-05-07 86 views
1

第一部分是如何項目收藏?收藏和嵌套投影的預測

我們可以對收集元素應用投影嗎? 對於e.g

class User{ 
    private address List<Address>; 
} 

class Address{ 
    private String city; 
    private String state; 
} 

現在我可以只加載用戶類的地址屬性?使用這樣的代碼:

criteria.setProjection(Projections.property("Address"));

但它總是返回我空,即使對象確實有一個地址字段集。 有沒有什麼不同的方法來項目收集項目?

第二部分:嵌套投影。 考慮與上面顯示的相同的模型,但不是具有地址集合,而是存在單個元素。 現在,如果我只想加載地址這是User類的一部分的「城市」屬性呢?

我試着這樣做:

Projections.property("Address.City") 

但它給我的錯誤,說明無法解析屬性:用戶的 「Address.City」。

是否有任何規定用於投影收集元素和嵌套投影?

回答

1

Hibernate區分大小寫。所以而不是A地址。 C ity,使用a地址。 c ity。如果它不起作用,請嘗試使用別名,例如:

DetachedCriteria criteria = DetachedCriteria.forClass(User.class); 
criteria.createAlias("address", "addAlias"); 
criteria.setProjection(Projections.property("addAlias.city")); 
+0

將嘗試。 怎麼樣投影收藏? – KCore 2010-05-10 13:05:10

+0

應該以同樣的方式工作(確保它被支持,請參考您的休眠版本的hibernate參考手冊)。請注意,在您的示例中存在相同的「案例」問題:對Projections.property使用「地址」,而不是「地址」。 – Thierry 2010-05-10 14:16:17