2015-08-14 59 views
3

Hibernate文檔提供了關於Hibernate filters的一些信息,並在該部分中討論了HQL和加載提取。但它從未明確提及與criteria queries一起使用它們的任何內容。預計會發生什麼樣的工作?假設休眠4.3。Hibernate過濾器可以與條件查詢一起使用嗎?

實體定義

@Entity 
@FilterDef(name="myFilter", [email protected](name="myParam", type="integer")) 
@Filters({ 
    @Filter(name="myFilter", condition="myField = :myParam") 
}) 
// assume MyType contains some mapped field named "myField" 
public class MyType { ... } 

查詢代碼

sess.enableFilter("myFilter").setParameter("myParam", 1); 
Criteria crit = sess.createCriteria(MyType.class); 
//set some other restrictions on crit 
List items = crit.list(); 

會項目有myFilter有哪些應用?

+0

對不起,並不意味着添加「JPA」標籤。我只是從「相關標籤」點擊它。 –

+0

你試過了嗎?結果是什麼? –

+0

我試過了,但沒有奏效。我們的代碼有點複雜(遠遠超過我上面的代碼片段),並且已經在許多不同的主要Hibernate版本中向前移植,因此很難理清理論上預期的vs觀察到的行爲。 –

回答

1

是的,它也適用於Criteria。無論您使用何種方式加載實體(HQL,session.get(),Criteria API或本機查詢),過濾器都應用於會話級別。