使用@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