我有一個數組,我想循環內更新查詢。我嘗試了幾種方法,但有一些錯誤。在hql中循環數組?
hql = """UPDATE items
SET nOrder = CASE id
"""
//l1 is the list of ids.
for(int i = 0; i <= l1.size(); i++) {
hql += "\n WHEN ${l1[i]} THEN ${i}"
}
hql += "\n END"
hql += "\n WHERE id IN (:id)"
Items.executeUpdate(hql,[id: l1])
即使我已經嘗試過這樣得到了同樣的錯誤。
for(int i = 0; i <= l1.size(); i++) {
Items.executeQuery("UPDATE Items SET nOrder = CASE id WHEN ${l1[i]} THEN ${i} END WHERE id IN (:id)",[id: l1])
}
錯誤消息。
期待 「然後」,找到 '' 近線1,列61 [UPDATE SET org.items = nOrder CASE WHEN ID 2,1 THEN 0 END WHERE ID IN(:ID)]
任何人都可以讓我知道我在做什麼錯嗎?
'我<= l1.size()'看起來很奇怪 – cfrick 2014-10-01 10:25:31
有沒有更好的方法來計算的記錄? – 2014-10-01 13:07:00
'<='是這裏的奇怪部分。通常'size()'返回大小,所以從0開始的for循環需要'i
cfrick
2014-10-01 13:11:06