在Spring Data REST的上下文中,我想在单个查询的结果上公开搜索/过滤功能。
如果我的查询是findAll,那将是开箱即用的(扩展QueryDslPredicateExecutor
就足够了)。但是如何将我的自定义查询(findMyNotes)与用户提供的其他过滤(标记为已完成)结合起来。我的意思是:
@Entity
class Note {
@Id
private UUID id;
private UUID personId;
private String status;
private String text;
}
@RepositoryRestResource(path = "notes", itemResourceRel = "notes", collectionResourceRel = "notes")
interface NoteRepository extends JpaRepository<Note, UUID>, QueryDslPredicateExecutor<Note> {
@RestResource(path="notes/my")
@Query("select n from Note n where n.personId=:creatorId")
Page<Note> findDone(@Param("creatorId") UUID creatorId, Predicate predicate, Pageable pageable);
}
我没有找到任何开箱即用的东西。因此我想使用AOP和:
@RestResource
org.springframework.data.querydsl.QueryDslPredicateExecutor#findAll(Predicate, org.springframework.data.domain.Pageable)
?)
@Query
的内容)问题是我不知道如何做第一点(除了在servlet过滤器中进行黑客攻击) - 将多条路径映射到同一个findAll方法。
或者可能是我错过了一些开箱即用的东西?