ArslanAnjum
ArslanAnjum

Reputation: 1724

Dynamic like query in spring data jpa

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);

Upvotes: 1

Views: 2197

Answers (2)

ArslanAnjum
ArslanAnjum

Reputation: 1724

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 :)

Upvotes: 2

Cepr0
Cepr0

Reputation: 30474

No. Spring Data JPA support only entityName variables inside SpEL based query templates

For dynamic queries use:

Upvotes: 0

Related Questions