当前位置: 首页 > 面试题库 >

使用JPA更新多行

芮化
2023-03-14
问题内容

我想更新表的所有字段的值为“ PCNAME”。我要更新的表名是XYZ。我只想更新一些字段而不保留一些不变。

这会影响很多行而不是一行,因为会有很多行带有NAME =’PCNAME’。我如何使用JPA做到这一点。我有与此表关联的实体类。


问题答案:

您既可以采用面向对象的方式,也可以使用更新查询。

面向对象:

public void setNameOfAllEntities(String newname){
    List<MyEntity> items =
        entityManager.createQuery("from MyEntity", MyEntity.class)
            .getResultList();
    for(MyEntity entity : items){
        entity.setName(newname);
    }
}

使用更新查询(未试用):

public void setNameOfAllEntities(final String newname){

    final int changes =
        entityManager.createQuery("update MyEntity set name = :name")
            .setParameter("name", newname)
            .executeUpdate();

    System.out.println(changes + " rows changed");

}

显然,第二个版本的性能更好。



 类似资料:
  • 查询(非本机): Spring数据JPA方法: 使用Spring JpaTransactionManager

  • 前一段时间,我的查询对于单行更新很有效。现在我必须修改这个查询来更新多行。查询是本机的,使用postgresql和postgis。 老问题是: 在新的查询中,我在中添加了一些参数,如下所述: 但可悲的是,这种改变没有任何效果。(如果我午餐从postgresql查询它运行完美)。我该怎么解决? 编辑:我添加了查询,但它适用于postgresql。唯一的区别是旧版本:目标是一行,新的以多行为目标。id

  • 我正在尝试更新我的jpa存储库 这是我控制器的一部分: 服务器还说: SQL错误:0,SqlState:S1009 2017-06-18 12:51:15.778错误10388---[nio-8080-exec-4]O.H.Engine.jdbc.spi.SQLExCeptionHelper:无法使用executeQuery()发出数据操作语句。2017-06-18 12:51:15.844错误1

  • 我正在尝试使用Querydsl(4.1.4)查询JPA,如本文http://www.Querydsl.com/static/Querydsl/latest/reference/html/ch02.html#jpa_integration所述。我使用Hibernate(5.2.12.final)作为JPA后端。我使用和处理器从JPA注释类生成Querydsl查询类型。 这将打印: 原始JpaUpda

  • 问题内容: 我有这些表和值: 我想使用表1中的值及其各自的ID更新表2中的所有值。 有没有办法通过简单的SQL查询来做到这一点? 问题答案: 运行选择以确保它是您想要的 更新 另外,请考虑使用,以便在需要时可以将其回滚,但请在满意时再进行确认。

  • 问题内容: 我的结构表如下: 我需要使用一条语句一次更新三行,以便第二列分别为5、3、2。 我使用以下查询,但似乎缺少一些内容 我的问题是这样吗?如果没有,我可以使用语句吗?或者我只能选择在一个语句中使用它来实现这一点? 请注意,这是为了 问题答案: 好吧,根据您给的小提琴,我尝试了这些,对我有用 我没有使用where条件