2015-10-03 66 views
1

我有一個名爲'uniqueCode'的字段,它使用city和salesPersonId以及一些count形成。 格式: uniqueCode =城市+ SalesPersonId + 101 例如: AHM1101 = AHM + 1 + 101 現在,我想這將需要城市和salespersonId並返回我UNIQUEID的最大的方法。 我寫這樣的查詢:類似查詢中的兩個參數Hibernate查詢

@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。 什麼是寫這個查詢的正確方法。 謝謝。

回答

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

感謝的人,我只需要谷歌串聯參數。我剛剛發現,其他方式我們可以通過使用'||'運算符來實現。 –

+1

@RajKantaria是的,你可以使用它。但我認爲'''是Hibernate特有的,而'CONCAT'是由JPA標準定義的。因此,如果您從Hibernate JPA提供程序切換到其他類型(可能不太可能,但值得一提),那麼通過使用'CONCAT',您的查詢應該是兼容的。 –

0

類似的操作數正期待一個帶有撇號的字符串值。 例如,如果您正在尋找AHM1%,寫這個查詢的正確的方法是 - SELECT MAX(s.uniqueCode)FROM的ServiceProvider S其中s.uniqueCode LIKE 'AHM1%'

嘗試增加那些圍繞您的搜索字符串,看看它是否有幫助。