我有一个名为'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 。 编写此查询的正确方法是什么。 感谢。
答案 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%'
尝试在搜索字符串周围添加它们,看看它是否有帮助。