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

java – 在Hibernate / JPA中可选地使用级联

发布时间:2020-12-15 02:24:37 所属栏目:Java 来源:网络整理
导读:我的问题很简单,但总的来说非常重要 – 我想.我做了几个小时的研究,但没有找到任何有用的东西. 介绍: 我有一个名为Employee的实体 – 它是我系统的中心类(比如它的人力资源管理).通过写作中心,我在脑海中认为它与其他成员有很多关系.其中包含OneToOne,OneTo
我的问题很简单,但总的来说非常重要 – 我想.我做了几个小时的研究,但没有找到任何有用的东西.

介绍:
我有一个名为Employee的实体 – 它是我系统的中心类(比如它的人力资源管理).通过写作中心,我在脑海中认为它与其他成员有很多关系.其中包含OneToOne,OneToMany和ManyToOne属性.
问题:
在某些情况下,我必须刷新此实体(它还具有基本属性,如’String name;’等) – 在一个EntityManager上下文(hibernate Session)中更改之后,必须在其他实例中刷新.当然我可以用它:

entityManager.refreash(employee);

但是……它也会刷新像“一百个”相关的entites(提到:1-1,-1,1-关系),因为这些关系有注释参数Cascade.All或Cascade.REFREASH.在那种情况下不需要什么 – 我只在这种情况下使用Employee实体本身.什么是不想要的,因为它会打击性能甚至局部需要0.5秒……
题:
有没有办法刷新实体任选“关闭”其属性的级联.或许:有没有办法只使用Hibernate / JPA刷新实体的特定属性?

我真的不希望Hibernate触发那20个更长的SQL查询,当我在那些情况下刷新我的实体时,但在其他情况下它是需要的.

换句话说,我会说我需要像“respectCascadesOnRefresh = true / false”这样的选项,可以在refreash之前设置.

还有其他想法吗?

任何帮助,赞赏,

佩德罗

解决方法

>首先,如果只刷新两个或三个字段,请使用标准api.
>其次,Cascade在绝对环境中不是一件好事 – 你最好手动解决一些依赖.
>第三,使用FetchType.LAZY进行收藏!

附:不,你不能手动使用级联,因为这个注释在生成数据库方案时使用一次.

(编辑:李大同)

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

    推荐文章
      热点阅读