首页 > 解决方案 > JPA 持久性问题

问题描述

我无法在 JPA 中记录我的数据库。我的设置是为 JPA 设置的,我正在使用休眠作为服务。我有以下代码。

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();

当我更改北人列表中的价格值时,我希望它在实体管理器关闭时对数据库产生影响。因为我猜它是在一种持久的领域。如果我在这里所做的一切都正确,那么我的班级结构中可能还有其他问题。

请你帮助我好吗?我做错了什么?谢谢你...

标签: javadatabasejparecord

解决方案


在提交之前添加这一行。如果您正在 EntityManager 中寻找可以保存或更新集合的东西,答案是否定的。你将不得不循环。如果记录存在,EntityManager.merge() API 将更新,否则将插入新记录。

aa.stream().foreach(em::merge);

希望它会奏效。


推荐阅读