当前位置: 首页 > 知识库问答 >
问题:

通过类型ORM中的原始查询进行批量更新

魏翔
2023-03-14

如何通过 TypeORM 中的原始查询进行批量更新?
例如,我们有具有属性名称的模型 User
如何在一个事务中更改几个用户的名称?

类型orm版本:0.2.7
数据库:后记

共有3个答案

别宏盛
2023-03-14

不支持用不同的值更新多个列。关于这一点,在type ORM repo:https://github.com/typeorm/typeorm/issues/7326中有一个公开的问题

如何使用原始psql执行此操作,请参见@Roman-Pekar对使用PostgreSQL更新同一查询中的多行的回答。

另一个“解决方案”是在 postgres db 中创建一个存储的函数并调用它。在另一个类似问题的评论中,我展示了一个如何做到这一点的示例:typeorm高效的批量更新

古弘
2023-03-14

您还可以通过以下方式使用存储库api更新多行:

await repository.update(
  {
    id: In([1,2,3,4,5]),
  },
  { selected: true },
);
闽承望
2023-03-14

要进行批量更新,可以使用update with set方法,当可以使用orm函数时,建议不要使用原始查询。


import {getConnection, In} from "typeorm";
const userIds = [1,2,3];

await getConnection()
  .createQueryBuilder()
  .update(User)
  .set({ isaSeniorCitizen: true })
  .where({ id: In(userIds) })
  .execute();

 类似资料:
  • 问题内容: 考虑以下方法: 和 这两种方法有什么区别?如果没有差异,为什么要使用第二个? 问题答案: 不允许您在列表中添加对象。请参阅下面的程序。这是我们传递给method的特定列表类型。 特定方式,列表是使用特定类型创建的,并传递给method 。不要与 单词 混淆。 具体可以是任何普通对象,例如Dog,Tiger,String,Object,HashMap,File,Integer,Long

  • 问题内容: 我正在尝试使用原始sqlalchemy查询将值插入Postgres11数据库。通过psql- client运行以下SQL查询时,它可以正常运行: 所有行均正确插入: 但是,如果我在sqlalchemy中创建一个引擎,并使用相同的查询在其上调用execute,它会成功运行,但不会插入任何行: 但是没有插入新行: 通过psql-client运行查询与通过sqlalchemy执行查询有何不同

  • 我想在一条语句中更新PostgreSQL和Go中的多行。有没有办法做如下事情? 还有有没有一个例子,如果用go语言执行?

  • 最近,我开始在Java后端使用Elasticsearch(7.6.x)(我基本上是ES的初学者),我有一个一般性的问题,我搜索了这个问题,但没有找到答案: 我的工作流程如下: > 我打开kibana的开发工具控制台,想出一个要搜索的查询。因为语法对我来说是新的,所以需要一些时间。 然后我的DAO-s中有了。我正试图将我在kibana中创建的查询“翻译”给众多的构建者,用java API构建一个查询

  • 我正在使用具有HiberNate的Spring Boot1.5.2。 我有一个对象列表。每个对象都包含许多属性和@OneTo许多关系(即从数据库中获取此对象并将此对象更新到数据库需要很长时间)。 这就是我使用自定义 JPQL 查询的原因: 一个用于加载对象列表的基本属性 一个用于更新对象所需的属性 我从CrudRepository扩展了这个方法,用于获取对象列表(只有所需的属性) 现在,我想通过以

  • 7.12. 通过类型断言询问行为 下面这段逻辑和net/http包中web服务器负责写入HTTP头字段(例如:"Content-type:text/html)的部分相似。io.Writer接口类型的变量w代表HTTP响应;写入它的字节最终被发送到某个人的web浏览器上。 func writeHeader(w io.Writer, contentType string) error { if