gpt4 book ai didi

java - 如何比较 JPA PreUpdate 中的两个实体

转载 作者:行者123 更新时间:2023-11-30 06:23:45 25 4
gpt4 key购买 nike

<分区>

我正在使用 OpenJPA 2.2.1 并希望执行以下操作:

1) 加载一个实体2)改变实体3) 检查保存实体前所做的更改

我做了什么:

1) 通过

加载实体
    EntityManager.find(MyObject.class, id);

2) 好的,很清楚,我想,像

    MyObject obj = EntityManager.find(MyObject.class, id);
obj.setName("New name");

3) 试图从 PersistenceContext 中逐出对象并通过以下方式从数据库中再次加载它:

    EntityManager.evict(MyObject.class, id);
EntityManager.find(MyObject.class, id);

3) 中 find() 调用返回的实体始终与 1) 中找到的实体相同(相同 ID)

我想我可以通过逐出从 PersistenceContext/缓存中删除实体。

我怎样才能拥有两个不同的实体:a) 改变后的实体和b) 来自步骤 3) 中加载的数据库的原始实体

并且:如果我 refresh() 实体,我希望 find 方法返回刷新后的实体。对吗?

我也尝试了 @PreUpdate 监听器,结果相同,所以我认为关于 JPA PersistenceContext 或 Java 引用一定有一些我不理解的地方......

希望我提供了足够的信息!提前致谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com