【问题标题】:Two parameters in like query Hibernate Querylike查询Hibernate Query中的两个参数
【发布时间】:2015-12-31 11:31:58
【问题描述】:

我有一个名为“uniqueCode”的字段,它使用 city 和 salesPersonId 以及一些计数形成。 格式: uniqueCode = City + SalesPersonId + 101 示例: AHM1101=AHM+1+101 现在,我想要一个方法,它会采用 city 和 salespersonId 并返回我最大的 uniqueId。 我写了这样的查询:

@Query("SELECT max(s.uniqueCode) FROM ServiceProvider s WHERE s.uniqueCode LIKE :cityCode:salesPersonId%")
public String maxUniqueCode(@Param("cityCode") String cityCode, @Param("salesPersonId") Long salesPersonId);

但是 Unexpected token: salesPersonId 会出错。 编写此查询的正确方法是什么。 谢谢。

【问题讨论】:

    标签: hibernate hql spring-data-jpa


    【解决方案1】:

    尝试使用CONCAT(:cityCode, :salesPersonId, '%') 将您的参数加入单个字符串,它应该可以工作:

    @Query("SELECT max(s.uniqueCode) FROM ServiceProvider s WHERE s.uniqueCode LIKE CONCAT(:cityCode, :salesPersonId, '%')")
    public String maxUniqueCode(@Param("cityCode") String cityCode, @Param("salesPersonId") Long salesPersonId);
    

    【讨论】:

    • 谢谢伙计,我只需要谷歌来连接参数。我刚刚发现,我们可以通过使用|| 运算符来实现它。
    • @RajKantaria 是的,您可以使用它。但是我认为|| 是特定于Hibernate 的,而CONCAT 是由JPA 标准定义的。因此,通过使用CONCAT,如果您从 Hibernate JPA 提供程序切换到其他提供程序,您的查询应该是兼容的(可能不太可能,但仍然值得一提)。
    【解决方案2】:

    like 操作数需要一个带有撇号的字符串值。 例如,如果您正在寻找 AHM1%,那么编写此查询的正确方法是 - SELECT max(s.uniqueCode) FROM ServiceProvider s WHERE s.uniqueCode LIKE 'AHM1%'

    尝试在搜索字符串周围添加这些内容,看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      相关资源
      最近更新 更多