Dan*_*nik 6 java spring spring-data-jpa
我正在编写用于租用平面网络应用程序的后端,但我不知道如何从数据库中过滤公寓(例如可用房间、床位、楼层或城市)。所以我有 10 个字段,因此用户可以在一次搜索中选择所有字段来过滤平面,我只是想以一种方法将所有字段放入 JPA 存储库中,但是当我只使用其中的 5 个字段时,它开始冻结,我无法添加更多字段。当我开始输入例如 NumberOfRooms 时,它只是冻结,然后输入每个字母也冻结。
1.搜索(过滤)字段有限制吗?
2.还有什么方法可以做到这一点?(我想把所有东西都放在一个方法中,并在控制器中检查用户是否使用了所有过滤器,检查每个字段是否为空)
List<Flat> findAllByPriceBetweenAndCityAndRentORbuyAndUtilitiesBetweenAndNumberOfBedsBetweenAndNum(FastMoney less,FastMoney greater,String city,Boolean rentORbuy,int util1,int util2,int num1,int num2);
Run Code Online (Sandbox Code Playgroud)
Vla*_*cea 12
当您可以编写格式良好的多行 JPQL 查询并Text Blocks用于加分时,为什么还要编写一个无法解析的 88 个字符的方法?
如果要动态构建查询,请使用 Criteria API。您甚至可以从类型安全的Metamodel.
所以,这是你需要做的:
findFlats方法。findFlats方法中,使用 Criteria API 动态构建查询。就是这样!
在这里,由于您的用户并不总是提供您需要使用更多动态查询的所有字段。我推荐规范作为实现它的最佳方式。
您可以在官方文档中找到更多信息:https : //spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
| 归档时间: |
|
| 查看次数: |
6590 次 |
| 最近记录: |