从列表到元组的JPA原生查询

fcipmucu  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(115)

我在JPARepository上定义了一个方法,用于为给定的id列表更新属性的实体。

@Modifying
@Transactional
@Query("UPDATE Entity SET date = ?1 WHERE id IN (?2)")
void updateDeletionDate(Date date, List<Long> ids);

这是可行的,但我刚刚发现列表的最大长度是1000项(由于ORA-01795),所以我尝试了迄今为止找到的最佳方法:但是,我不知道如何转换查询,因为类似下面这样的操作显然会失败:UPDATE Entity SET date = ?1 WHERE (id , 0) IN ((?2, 0))

b1zrtrql

b1zrtrql1#

您可以在选择要更新的ID的子查询上使用连接

UPDATE Entity e 
SET e.date = ?1 
WHERE e.id IN (SELECT i.id FROM (VALUES (?2), (?3), ...) as i(id))

相关问题