【问题标题】:JPA native query from list to tuples从列表到元组的 JPA 本机查询
【发布时间】:2023-01-20 19:53:47
【问题描述】:

我在我的JPARepository 上定义了一个方法来为给定的 ID 列表更新属性的实体。

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

这行得通,但我刚刚发现列表的最大长度是 1000 个项目(由于ORA-01795),所以我正在尝试迄今为止我发现的最佳方法:2. Use tuples。但是,我不知道如何翻译查询,因为这样的事情显然失败了:UPDATE Entity SET date = ?1 WHERE (id , 0) IN ((?2, 0))

【问题讨论】:

    标签: java sql spring-boot jpa oracle10g


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 2022-11-26
      • 2021-11-18
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 2023-01-19
      • 2016-11-02
      • 2012-10-09
      相关资源
      最近更新 更多