繁体   English   中英

JPA EclipseLink添加/更新实体

[英]JPA EclipseLink Adding/Updating entities

我对JPA处理添加/更新实体的方式有些困惑。

自动取款机,我有这段代码:

AltContact c = new AltContact("test");
save(c)
System.out.println("ENTITY: " + contains(c));
c.setEnterpriseName("test2");
save(c);
System.out.println("ENTITY: " + contains(c));

save方法是我的应用程序服务器端请求在EntityManager上进行合并的一种简单方法:

public void save (Object e) {
    em.merge(e);
    em.flush();
}

其中emEntityManager

contains再次是服务器端的一种方法,该方法将询问实体管理器当前当前持久上下文中是否存在给定实体。

上面的代码在我的表中创建了两行,第一行的值为“ test”,另一行的值为“ test2”,这不是我想要的。

我想用值“ test”创建一个新行,然后在创建该行后立即对其进行更新,并将其值设置为“ test2”。 我在两次调用save之后都打印了包含的返回,两次都返回了false

我猜问题出在以下事实:我的实体在第一次调用save之后不属于持久上下文,因此当我再次调用save时,实体管理器认为它是一个新实体,并创建了一个新行。

如何实现此更新过程?

一些东西。 首先,为什么要使用merge()序列化实例,为什么? 如果仅编辑从持久性上下文返回的对象,则无需进行任何合并或保存。

如果需要将对象编辑为序列化或分离的,则对于新对象,需要从保存中返回对象的ID,这将链接分离的对象与托管对象。 理想情况下,您将在执行编辑之前执行find()以获取对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM