使用@Filter过滤Hibernate实体不会做任何过滤

我有一个标签实体,我想根据公司过滤

@Table @Entity @FilterDef( name = "company", parameters = arrayOf( ParamDef(name = "company", type = "com.domain.Company") ) ) @Filter(name = "company", condition = "company=:company") data class Tag( ... @Column(nullable = false) var name: String = "", @ManyToOne var company: Company? = null, ) 

现在,当我运行一个查询时,我希望子句WHERE o.company=:company来过滤标签。

 val query = em.createQuery("SELECT o FROM Tag AS o", Tag::class.java) query.setParameter("company", session.company) println(query.resultList ?: listOf()) 

相反,我得到一个错误:

java.lang.IllegalArgumentException:未知的参数名称:company

我已经尝试添加此之前做查询以及相同的错误:

 em.unwrap(org.hibernate.Session::class.java).enableFilter("company").setParameter("company", session.company) 

我看起来不像注释是做什么的。 什么是使用@Filter过滤公司的正确方法?

我在Hibernate版本5.2.4.Final ,使用Java 8和Kotlin 1.1.2-4