【问题标题】:convert mysql query to jpa query将mysql查询转换为jpa查询
【发布时间】:2018-03-13 21:14:15
【问题描述】:

如何将下面的 MySQL 查询转换为 Jpa 查询。

MySQL 查询:

SELECT s FROM supplier as s where s.id like '%s%' or s.reg_no like '%s%' or 
s.first_name like '%s%' or s.last_name like '%s%';  

我正在努力做到这一点。但我收到错误。

编辑: 如果有一个参数,它可以像下面的方法一样完成。

List<Supplier> findSuppliersByRegNoContaining(String regNo);

但我不知道,当有两个或多个参数时是否可能。并且传递相同的值被传递给所有参数。

【问题讨论】:

    标签: jpa spring-boot spring-data spring-data-jpa


    【解决方案1】:

    你可以在你的仓库界面尝试这样的事情

    @Query("SELECT s FROM supplier as s where s.id like '%s%' or s.reg_no like '%s%' or s.first_name like '%s%' or s.last_name like '%s%' ")
    

    另一种格式

    List<Supplier> getSuppliers();
    

    【讨论】:

    • 返回类型为 List
    • '%s%,这个“s”应该是一个参数怎么传。
    • @Query("SELECT s FROM supplier as s where s.id LIKE CONCAT('%',:param,'%') ") List getSuppliers(@Param("param" ) 字符串参数);
    • 明智地使用多个参数
    • 马杜·雷迪谢谢。我以前试过这个。它不起作用,因为我只使用了 % 但它应该是那个 '%'。这是我预期的答案。 @Query("SELECT s FROM Supplier as s where s.regNo LIKE CONCAT('%',:param,'%') 或 s.firstName LIKE CONCAT('%',:param,'%') "+" 或s.lastName LIKE CONCAT('%',:param,'%') 或 s.collectingCenter.name LIKE CONCAT('%',:param,'%')" + " 或 s.id LIKE CONCAT('%' ,:param,'%') " ) List getSuppliers(@Param( "param" ) String param);
    猜你喜欢
    • 2012-09-28
    • 2020-10-03
    • 2020-10-21
    • 2019-01-11
    • 2019-07-29
    • 2018-11-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多