【问题标题】:Dynamic like query in spring data jpaspring data jpa中的动态查询
【发布时间】:2017-08-15 11:05:40
【问题描述】:

在spring data rest中可以写一个动态查询如下。如果没有那么如何实现类似的功能:

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

【问题讨论】:

    标签: spring-data-jpa spring-data-rest


    【解决方案1】:

    解决了

    回购

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

    查询:

    /api/screens/search/byString?prop=address&val=a
    

    使用 prop=address 和 prop=screenName 对其进行了测试。工作:)

    【讨论】:

      【解决方案2】:

      没有。 Spring Data JPA 支持 only entityName 基于 SpEL 的查询模板中的变量

      对于动态查询使用:

      【讨论】:

      • 有可能。检查我的答案。
      • @ArslanAnjum 您的方法并不完全正确,因为它使用固定列。但是您的问题是指动态列(即动态条件)...
      猜你喜欢
      • 2015-01-27
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2020-07-31
      • 1970-01-01
      • 2019-02-28
      相关资源
      最近更新 更多