问题
Can a dynamic query be written in spring data rest as follows. If not then how to achieve a similar functionality:
@Query("select s from Screen s where s.#searchColumn like:searchValue%")
@RestResource(path="byString")
Page findAll(
@Param("searchColumn") String searchColumn,
@Param("searchValue") String searchValue,
Pageable pageable);
回答1:
Solved
Repo
@Query("select o from Screen o where "
+ "(o.screenName like :val% and :prop = 'screenName') or "
+ "(o.address like :val% and :prop = 'address')")
@RestResource(path="byString")
Page findAll(
@Param("prop") String prop,
@Param("val") String val,
Pageable pageable);
Query:
/api/screens/search/byString?prop=address&val=a
Tested it with prop=address as well as prop=screenName. Working :)
回答2:
No. Spring Data JPA support only entityName
variables inside SpEL based query templates
For dynamic queries use:
Specifications
Query by Example
Querydsl Extension
来源:https://stackoverflow.com/questions/45691581/dynamic-like-query-in-spring-data-jpa