java - “.count”在可分页查询中的 spring jpa-named-queries.properties 文件中不起作用
问题描述
我正在使用 Spring Batch,由于需求,我必须将我的项目正在使用的查询外部化。我遇到了以下问题,涉及使用分页的 JPA 存储库中的计数查询:
Hibernate: select * from ( SELECT DISTINCT column1 AS RID, column2 AS TYPE FROM mytable WHERE TYPE = 'X' AND TRIM(column3) IN (?, ?, ?) order by RID asc ) where rownum <= ?
Hibernate: select count(DISTINCT WHERE) FROM mytable WHERE TYPE = 'X' AND TRIM(column3) IN (?, ?, ?)
2020-04-20 09:45:43,464 ERROR: o.h.e.j.s.SqlExceptionHelper [main] ORA-00936: missing expression
如您所见,已形成的计数查询没有意义。
jpa-named-queries.properties 文件 (\src\main\resources\META-INF) 包含以下内容:
Operation.getItems=SELECT DISTINCT column1 AS RID, column2 AS TYPE FROM mytable WHERE TYPE = 'X' AND TRIM(column3) IN :list
Operation.getItems.count
存储库定义如下所示:
@Repository
public interface ItemsRepository extends JpaRepository<MyClass, String> {
@Query(
name = "Operation.getItems",
nativeQuery = true
)
public Page<MyClass> findAllItems(@Param("list") List<String> myList, Pageable pageable);
}
如果我在 @Query 注释中使用“countName”,我会遇到同样的错误:
jpa-named-queries.properties(注意 B 中的不同而不是 DISTINCT):
Operation.getItems=SELECT DISTINCT column1 AS RID, column2 AS TYPE FROM mytable WHERE TYPE = 'X' AND TRIM(column3) IN :list
Operation.getItemsB=SELECT COUNT(*) FROM (SELECT distinct column1 AS RID, column2 AS TYPE FROM mytable WHERE TYPE = 'X' AND TRIM(column3) IN :list)
存储库:
@Repository
public interface ItemsRepository extends JpaRepository<MyClass, String> {
@Query(
name = "Operation.getItems",
nativeQuery = true,
countName = "Operation.getItemsB"
)
public Page<MyClass> findAllItems(@Param("list") List<String> myList, Pageable pageable);
}
错误:
Hibernate: select count(distinct WHERE) FROM mytable WHERE TYPE = 'X' AND TRIM(COLUMN3) IN (?, ?, ?)
2020-04-20 10:36:39,936 ERROR: o.h.e.j.s.SqlExceptionHelper [main] ORA-00936: missing expression
如果我在存储库文件中编写计数查询,它工作正常,但这不是目标。
知道发生了什么吗?
感谢和问候。
解决方案
推荐阅读
- php - 有人可以帮我解决这个错误吗?(Xamarin.Forms)“System.Net.Http.HttpRequestException:'网络子系统已关闭'”
- algorithm - 资源固定预留的调度问题
- php - 如何在 PHP 中对数组使用explode 函数?
- image - 应用栏中的图像在标题和前导之间颤动
- c++ - 在 CMake 中使用 `git submodules` 和 `ExternalProject_Add` 进行依赖管理有什么关系?
- javascript - 为什么删除 Ajax 请求在 Firefox 上只能工作一次?
- python - 如何仅更改 JSON 中存在的那些变量
- java - 尝试使用 net minidev json 更新 json 数组但出现转换错误
- git - 没有像预期的那样从 git rebase 得到冲突
- gradle - KOTLIN:我应该如何处理这些错误?可能是我的 gradle 实现已经过时了吗?还是带有注释?