Google Prettify

2008-01-04

Hibernate中Criteria如何查詢nested property?

假設我們有一個Object A。A的型態是ObjectA,A有一個property名稱是 propertyA、類型是ObjectB。ObjectB中有一個property名稱是propertyB屬性是String。注意、問題來了:要怎麼使用Hibernate criteria去取得propertyB值是"nested property"的instance A呢?一般人都會直覺的認為

Criteria cri = session.createCriteria(ObjectA.class);
cri.add(Restrictions.eq("propertyA.propertyB", "nested property"));
Collection r = cri.list();

這樣是不行滴。(其中一個)正確的寫法是:

Criteria cri = session.createCriteria(ObjectA.class);
cri.createAlias("propertyA", "ptA");
cri.add(Restrictions.eq("ptA.propertyB", "nested property"));
Collection r = cri.list();

沒錯,跟HQL一樣,需要使用alias。
更多請參考:Hibernate 文件

1 則留言 :

Kit 提到...

請問前輩, 若果開發的模型如下.

http://technology.amis.nl/blog/704/bill-of-materials-and-hierarchical-queries-which-component-contains-a-component-that

它的 uml 和 hibernate mapping file 應該怎樣呢?

小弟是初哥, 多多指教.

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。