springjpa:是否可以使用spel对集合进行批插入查询?

iqjalb3h  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(292)

我想使用以下函数在存储库上创建一个insert查询

void insertValues(Iterable<Long> keys)

查询必须插入多行,但只有主键更改,其余为常量;
我尝试了以下查询

@Query(nativeQuery = true, value = "INSERT INTO my_table (id, col1, col2, col3) VALUES :#{[0].!['('+#this+',''val1'',''val2'',''val3'')']}" )

@Query(nativeQuery = true, value = "INSERT INTO my_table (id, col1, col2, col3) VALUES (:#{[0].![new Object[]{#this, 'val1', 'val2', 'val3'}]})" )

前者失败是因为整个值作为单个varchar插入了一个prepared语句,后者失败是因为spel表达式终止于第一个右括号(我在这里关闭数组),而不是第二个右括号
有什么办法吗?

6yjfywim

6yjfywim1#

我认为这是不可能的。用这样的方法:

interface MyRepo {
  @Query(nativeQuery = true, value = "INSERT INTO my_table (id, col1, col2, col3) VALUES (?, 'val1', 'val2', 'val3')" )
  void insertValue(long id);

  default void insertValues(Iterable<Long> keys) {
    keys.forEach(this::insertValue);
  }

}

相关问题