像查询Hibernate Query中的两个参数

时间:2015-10-03 09:30:58

标签: hibernate hql spring-data-jpa

我有一个名为'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);

但它给出的错误是意外令牌:salesPersonId 。 编写此查询的正确方法是什么。 感谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

尝试在搜索字符串周围添加它们,看看它是否有帮助。