我创建了一个像学生一样的表,我根据年龄(例如年龄= 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”)
答案 0 :(得分:3)
由于您正在创建独立应用程序,因此必须先打开一个事务,然后只需更改对象中的字段值,并且在提交事务时,更改将自动刷新到数据库。
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();