gpt4 book ai didi

java - 我可以使用 JPA 通过查询语言更新表的多列吗

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:21 24 4
gpt4 key购买 nike

我创建了一张像学生一样的表,并根据年龄(比如年龄 = 22)获取了地址。现在我想将基于年龄“22”的地址更新到表的所有地址列。我该怎么做?

下面是我的代码:

public static void main(String[] args) {
EntityManager entityManager = Persistence.createEntityManagerFactory(
"demoJPA").createEntityManager();

Query query = entityManager.createQuery("SELECT student FROM Student student WHERE student.age = 22");
System.out.println("Data is" + query.getResultList().size());
List<Simpletable> simpletable = query.getResultList();

for (Simpletable simpletable1 : simpletable){
System.out.println(simpletable1.getAddress());
}
}

我获取了数据,但我现在该如何更新。是否可以通过循环和 setAddress("US") 进行迭代

最佳答案

由于您正在创建一个独立的应用程序,因此您必须先打开一个事务,然后您可以简单地更改对象中的字段值,当提交事务时,更改会自动刷新到数据库中。

EntityTransaction tx = entityManager.getTransaction();
try {
tx.begin();
try {
for(SimpleTable simpleTable : simpleTables){
simplaTable.setAddress(newAddress);
}
} finally {
tx.commit();
}
} catch (Exception e) {
// handle exceptions from transaction methods
}

--编辑--

无需先获取记录即可编辑所有记录的替代方法是进行批量更新,仍在事务中,如下所示:

entityManager.createQuery("UPDATE SimpleTable s " +
"SET s.address.state = ?1 " +
"WHERE s.address.country = ?2")
.setParameter(1, "FL")
.setParameter(2, "US")
.executeUpdate();

关于java - 我可以使用 JPA 通过查询语言更新表的多列吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com