加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JPA暂时信息在创建时丢失

发布时间:2020-12-14 05:27:02 所属栏目:Java 来源:网络整理
导读:我有一个具有瞬态场的实体.当我想创建一个新的对象实例时,我失去了我的瞬时信息.以下示例演示了此问题.为了这个例子,我们来说吧吧是一个短暂的领域. FooEntity fooEntity = new FooEntity();fooEntity.setFoobosity(5);fooEntity.setBarness(2);fooEntity =
我有一个具有瞬态场的实体.当我想创建一个新的对象实例时,我失去了我的瞬时信息.以下示例演示了此问题.为了这个例子,我们来说吧吧是一个短暂的领域.
FooEntity fooEntity = new FooEntity();
fooEntity.setFoobosity(5);
fooEntity.setBarness(2);
fooEntity = fooEntityManager.merge(fooEntity);
System.out.println(fooEntity.getFoobosity()); //5
System.out.println(fooEntity.getBarness()); //0 (or whatever default barness is)

有什么办法保持我的短暂信息吗?

解决方法

这或多或少地按照设计工作.瞬态的语义正是070??00.从entityManager.merge(obj)返回的实体实际上是一个全新的实体,它保持对象的状态被传递到merge(状态,在这种情况下,不是任何东西持久化对象的一部分).这在07年01月进行了详细说明.注意:在对象合并之后,可能会有JPA实现来维护瞬态字段(仅仅因为它们返回相同的对象),但是这个行为不能被规范所保证.

基本上你可以做两件事情:

>决定持续的瞬态场.如果在将类合并到持久性上下文中之后需要它,它似乎并不是短暂的.
>保持永久对象外部的瞬态字段的值.如果这符合您的需求,您可能需要重新思考域类的结构;如果这个字段不是域对象状态的一部分,那真的不应该在那里.

最后一件事:我发现域类上的瞬态字段的主要用例是划分派生字段,即可以根据类的持久字段重新计算的字段.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读