2012-05-02 42 views
0

如何將過濾器添加到Hibernate上的Join?我有一個有三個孩子的實體父,我想通過這些孩子實體的一些字段來過濾數據。聯接它通過Hibernate中的過濾器加入

sessionFactory.getCurrentSession().createCriteria(Cartel.class).add(create(instance)).list(); 

我認爲,假如我想,以濾除領域,Hibernate會自動將建立參加由這些字段篩選我的DAO創建,但是它返回所有結果(僅內置SELECT語句where子句中有1 = 1)。

+0

如果您希望發佈更多關於您要使用的Cartel類和其他類的信息,並給出您想要獲取的select(帶過濾器)的示例,我們可以提供更多有用的信息您。 –

回答

0

我解決了:

criteria.add(Restrictions.eq("xxx",Object); 

感謝。 Regards

0

不幸的是,HQL不允許ON子句的概念用於連接,這就是你所指的。

但是,您可以編寫原始SQL和使用createSQLQuery()執行任意SQL,這當然可以指定ON條款(假設你的數據庫支持的話)

+0

但是,聲明是正確形成與每個子實體加入。問題是我無法將過濾器添加到這些子實體上的數據集的where子句。 – user1260893

+0

只需使用HQl然後:'where parent.child.name ='fred''等 – Bohemian

+0

我沒有任何HQL,JOIN它是用hbm和標準自動構建的。 – user1260893