我在 JPA 中记录我的数据库时遇到问题。 我的设置是为 JPA 设置的,我正在使用 hibernate 作为服务。 我有以下代码。
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
List<Beer> beiren = FindBeers();
List<Beer> aa = beiren.stream().map(x-> {
x.setPrice(x.getPrice()*1.02F);
return x;
}).collect(Collectors.toList());
Collections.copy(beiren,aa);
beiren.stream().forEach(System.out::println);
tx.commit();
em.close();
emf.close();
当我更改 beiren 列表中的价格值时,我希望它在实体管理器关闭时对数据库产生影响。我猜是因为它处于一种持久的领域。 如果我在这里做的一切都正确,我的类(class)结构可能还有其他问题。
你能帮帮我吗?我做错了什么? 谢谢...
最佳答案
在提交之前添加这一行。如果您正在 EntityManager 中寻找可以保存或更新集合的东西,答案是否定的。你将不得不循环。如果记录存在,EntityManager.merge() API 将更新,否则将插入新记录。
aa.stream().foreach(em::merge);
希望它能奏效。
关于java - JPA持久性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296973/