【发布时间】:2021-10-13 16:08:44
【问题描述】:
我在 JPA 存储库中有一个项目。我想使用 UNIONS 和一个响应参数从两个表中检索值,并且我在以下本机查询方面取得了成功。
Public interface resultRepository extends JpaRepository<Result, String>{
@Query(value= “SELECT ‘This is from Table 1’ AS MSG, COLUMN1, COLUMN2 COLUMN3, COLUMN4, COLUMN5 FROM TABLE1
WHERE COLUMN1 = :column1 AND COLUMN2 = :column2 AND COLUMN3 = :column3
UNION
SELECT ‘This is from Table 2’ AS MSG, COLUMN1, COLUMN2 COLUMN3, COLUMN4, COLUMN5 FROM TABLE2
WHERE COLUMN1 = :column1 AND COLUMN2 = :column2 AND COLUMN3 = :column3 ”, nativeQuery = true)
List<Result> getResultByParameters(@Param(“column1”) String column1,
@Param(“column2’)String column2,@Param(“column3’) String column3);
}
我的问题是。我希望“Where”子句是动态的。这样他们就可以通过这些参数中的任何一个进行搜索。无论是 column1 和 column2 还是 column2 和 column3。在我的前端,这些列参数将为 NULL。使用本机查询我无法决定选择哪些参数使用什么。
我正在阅读此链接中的规范。 https://dimitr.im/writing-dynamic-queries-with-spring-data-jpa
但我根本不明白。我还能收到自定义消息 (MSG) 吗?或者甚至使用联合搜索多个表?
【问题讨论】:
-
你有没有想过这个问题?我遇到了确切的问题并遵循了相同的教程,但是当我尝试使用 repository.findAll(specifications, pageRequest) 时,我一直遇到 PropertyReferenceException "No property findAll found for type.."。它不应该这么难,但它是 Java,所以它就是。
标签: java spring-boot dynamic spring-data-jpa