我已经使用了前面要求的question来开发一个足够好的解决方案,通过关键字搜索我的大多数列,我的问题是我有一些列是其他实体的外键,我想把它们包括在搜索中。
以下两项均不起作用:SearchSpecification byBedroom = new SearchSpecification(new SearchCriteria("masterBedroom", ":", "searchVal"));
执行但仅返回非外部实体或SearchSpecification byBedroom = new SearchSpecification(new SearchCriteria("masterBedroom.roomName", ":", "searchVal"));
抛出一个异常-org.springframework.dao.无效数据访问ApiUsageException:在此ManagedType上找不到具有给定名称[masterBedroom. roomName]的属性。
我错过了什么?
1条答案
按热度按时间vuv7lop31#
我建议使用QueryDSL进行基于过滤器的搜索,因为它比Spring Data 规范或Criteria API更具可读性。
1.添加依赖项
<querydsl.version>5.0.0</querydsl.version>
运行mvn clean install-它将生成querydsl模型类。
1.创建一个搜索参数pojo下面的示例使用record
1.创建搜索存储库界面
1.在步骤3中创建repo的实现
更多详情:https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydslhttps://www.baeldung.com/rest-api-search-language-spring-data-querydsl