我有一个数组,我想循环内更新查询。我尝试了几种方法,但有一些错误。在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