如何为单个 JPQL 查询选择退出 @Where 过滤器?
How to opt out of a @Where filter for an individual JPQL query?
我有一个映射了 @Where
注释的实体,例如:
@Where(clause = "is_active = 1")
效果很好,但现在我想编写一个不使用 where
子句中带注释的过滤条件的查询。
我能想到的唯一方法是回退到本机查询。
有没有办法为单个特定查询禁用过滤器?
我正在使用 JpaRepository
@Query
带注释的接口方法来声明我的查询,例如:
@Query(name = "UnmergeStudent", value = "select .... student_1.lui = :lui")
List<UnmergeStudentSummary> findMergedStudentSummaryByLui(@Param("lui") String lui);
我查看了 @Query
注释的成员,但看不到任何明显的内容。如果我退回到用普通方法编写实际查询代码,有没有办法避免过滤器?
Hibernate 版本是 5.2。10.Final
您不能禁用 @Where
,但您可以改用 @Filter
。
@Where
和@Filter
的区别是@Filter
可以参数化,@Filter
有一个名字,必须用那个名字打开:
entityManager
.unwrap(Session.class)
.enableFilter("your_filter");
在官方文档中阅读更多相关信息:
我有一个映射了 @Where
注释的实体,例如:
@Where(clause = "is_active = 1")
效果很好,但现在我想编写一个不使用 where
子句中带注释的过滤条件的查询。
我能想到的唯一方法是回退到本机查询。
有没有办法为单个特定查询禁用过滤器?
我正在使用 JpaRepository
@Query
带注释的接口方法来声明我的查询,例如:
@Query(name = "UnmergeStudent", value = "select .... student_1.lui = :lui")
List<UnmergeStudentSummary> findMergedStudentSummaryByLui(@Param("lui") String lui);
我查看了 @Query
注释的成员,但看不到任何明显的内容。如果我退回到用普通方法编写实际查询代码,有没有办法避免过滤器?
Hibernate 版本是 5.2。10.Final
您不能禁用 @Where
,但您可以改用 @Filter
。
@Where
和@Filter
的区别是@Filter
可以参数化,@Filter
有一个名字,必须用那个名字打开:
entityManager
.unwrap(Session.class)
.enableFilter("your_filter");
在官方文档中阅读更多相关信息: