簡體   English   中英

在Hibernate / JPA中可選地使用級聯

[英]Using cascades optionally in Hibernate/JPA

我的問題很簡單,但總的來說非常重要 - 我想。 我做了幾個小時的研究,但沒有找到任何有用的東西。

介紹:
我有一個名為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在絕對上下文中不是一件好事 - 你最好手動解決一些dependecies。

  • 第三,使用FetchType.LAZY進行收藏!

PS和NO,您不能手動使用級聯,因為這個注釋在生成數據庫方案時使用一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM