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

Java 在Hibernate/JPA中可选地使用级联,java,hibernate,jpa,Java,Hibernate,Jpa,我的问题很简单,但总的来说很重要——我想。我做了几个小时的研究,但没有发现任何有用的东西 简介: 我有一个名为Employee的实体,它是我系统的中心类(比如说它的人力资源管理)。通过写“中心”,我意识到它与其他实体有很多联系。它有一个、一个和多个特性。 问题: 在某些情况下,在一个EntityManager上下文(hibernate会话)中更改该实体后,我必须刷新该实体(它还具有“String name;”等基本属性),并且必须在另一个上下文中刷新该实体。我当然可以用它: entityMana

我的问题很简单,但总的来说很重要——我想。我做了几个小时的研究,但没有发现任何有用的东西

简介:
我有一个名为Employee的实体,它是我系统的中心类(比如说它的人力资源管理)。通过写“中心”,我意识到它与其他实体有很多联系。它有一个、一个和多个特性。 问题:
在某些情况下,在一个EntityManager上下文(hibernate会话)中更改该实体后,我必须刷新该实体(它还具有“String name;”等基本属性),并且必须在另一个上下文中刷新该实体。我当然可以用它:

entityManager.refreash(employee);
但是。。。它也会像“一百”个相关的实体一样刷新(提到:1-1,-1,1-relations),因为这些关系有注释参数Cascade.All或Cascade.REFREASH。在这种情况下,什么是不需要的——在这种情况下,我只使用Employee实体本身。什么是不需要的,因为它会影响性能,甚至在本地需要0.5秒。
问题:
是否有任何方法可以刷新实体(可选地“关闭”其属性上的级联)。或者:是否有任何方法可以使用Hibernate/JPA只刷新实体的特定属性

我真的不希望在这些情况下刷新实体时,由Hibernate触发的长达20多个SQL查询,但在其他情况下需要它

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

还有其他想法吗

感谢您的帮助

佩德罗
  • 首先,如果只有两个或三个字段要刷新,请使用CriteriaAPI

  • 其次,在绝对上下文中,级联不是一件好事——您最好手动解决一些依赖关系

  • 第三,对集合使用
    FetchType.LAZY


  • 另外,您不能手动使用cascade,因为在生成db方案时,此注释只使用一次。

    1。六羟甲基三聚氰胺六甲醚。。。在这种情况下,这并不是正确的选项,因为这不是某种“手动刷新”,而是由我的框架自动机制执行的,所以像“refresh=true/false”这样的选项会很有用。标准-在这种情况下,我不认为它们有用。2.你可能是对的。他们不受尊重。另外,我不使用hibernate来生成我的db模式。这不只是生产模式吗。这并不能解决1-1和*-1的关系。和:我使用它们:)谢谢你的回答!!!:)抱歉,我想写:“顺便说一句,我不使用hibernate来生成我的db模式。它不是只用于开发模式吗?”确实如此。因为我没有得到更好的答案,所以我接受你的答案。但我希望我的处境会更好……:/再次感谢!:)