【发布时间】:2016-09-28 08:26:17
【问题描述】:
我正在使用 Spring data Rest 并寻找一种方法来创建具有排序和谓词(使用 querydsl)功能但没有分页器的集合(或搜索)资源。
到目前为止,我只需要禁用寻呼机,但具有排序功能。使用以下方法并调用GET /userAccounts/search/noPager 效果很好:
public interface ReportRepository
extends JpaRepository<Report, Integer>{
/**
* Non paged data with Sort capabilities
*/
@RestResource(path="noPager")
List<Report> findAllBy(Sort sort);
现在我需要添加谓词功能。如果我执行以下操作:
public interface UserAccountRepository
extends JpaRepository<UserAccount, Integer>,
QueryDslPredicateExecutor<UserAccount> {
/**
* Non paged data with Sort capabilities
*/
@RestResource(path="noPager")
List<UserAccount> findAllBy(Predicate predicate, Sort sort);
调用GET /userAccounts/search/noPager时出现以下错误:
java.lang.IllegalArgumentException:无法检测参数名称 查询方法 fr.texsys.datemplus.dm.domain.data.UserAccountRepository.findAllBy! 在 JDK 8 上使用 @Param 或使用 -parameters 编译。 在 org.springframework.data.repository.support.ReflectionRepositoryInvoker.prepareParameters(ReflectionRepositoryInvoker.java:235) ~[spring-data-commons-1.12.3.RELEASE.jar!/:na] 在 org.springframework.data.repository.support.ReflectionRepositoryInvoker.invokeQueryMethod(ReflectionRepositoryInvoker.java:206) ~[spring-data-commons-1.12.3.RELEASE.jar!/:na]
更奇怪的是,我尝试将 QueryDSL 与 CrudRepository 一起使用,它没有寻呼机功能。如果我使用QueryDslPredicateExecutor<UserAccount> 扩展 CrudRepository,并调用集合资源GET /userAccounts,则激活寻呼机。
没有QueryDslPredicateExecutor:
public interface UserAccountRepository
extends CrudRepository<UserAccount, Integer> {
没有寻呼机:
{
"_embedded" : {
"userAccounts" : [...]
},
"_links" : {
"self" : {
"href" : "http://localhost:15571/userAccounts"
},
"profile" : {
"href" : "http://localhost:15571/profile/userAccounts"
}
}
}
但是QueryDslPredicateExecutor:
public interface UserAccountRepository
extends CrudRepository<UserAccount, Integer>,
QueryDslPredicateExecutor<UserAccount> {
寻呼机被激活
{
"_embedded" : {
"userAccounts" : [ ... ]
},
"_links" : {
"self" : {
"href" : "http://localhost:15571/userAccounts"
},
"profile" : {
"href" : "http://localhost:15571/profile/userAccounts"
}
},
"page" : {
"size" : 20,
"totalElements" : 3,
"totalPages" : 1,
"number" : 0
}
}
【问题讨论】:
标签: spring spring-data spring-data-rest querydsl