java - JPA持久性问题

标签 java database jpa record

我在 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/

相关文章:

python 访问 mysql 数据库无法加载库

android - 尝试打开sqlite数据库后,我的android应用程序崩溃

node.js - 使用 Kubernetes 进行微服务设计 - API 网关、通信、服务发现和数据库问题

java - 为什么 Hibernate 会阻止 Java 进程退出?

java - 为 JPA 存储库编写 junit

java - 检查实体附有其标识符

Java - 如何将 Scala Stream 转换为 Java Stream?

java - 使用 XSLT 从 xml 文件的父标签和子标签获取值

java - 简单的 Java 网络服务

Java Swing 拆分 Pane View 布局