Dynamic like query in spring data jpa

﹥>﹥吖頭↗ 提交于 2019-12-11 15:13:17

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!