簡體   English   中英

Hibernate JPA:為什么執行SQL?

[英]Hibernate JPA: Why is SQL executed?

是否有確定Hibernate / JPA為什么執行查詢的好方法。 我有兩個實體通過

@OneToOne(cascade = {CascadeType.REMOVE, CascadeType.PERSIST},
          fetch   = FetchType.LAZY)

在獲取一個實體時,也會查詢另一個實體。 我試圖找出如何避免這種情況(實際延遲加載)。

謝謝,

-丹尼斯

首先, FetchType.LAZY是對持久性提供程序的提示,不需要提供程序遵循它。

也許在這種情況下,提供程序必須檢查關系是否為null (否則,提供程序可以創建代理對象以延遲訪問實體)。

您可以嘗試以下方法:

  • 如果此關系從不為null ,則將其標記為optional = false
  • 如果您使用字段訪問(即在字段上放置了注釋),請嘗試使用屬性訪問

Enum FetchType定義用於從數據庫中獲取數據的策略。 EAGER策略是對持久性提供程序運行時的要求,必須熱切地獲取數據。 LAZY策略向持久性提供程序運行時提供了提示,即首次訪問數據時應延遲獲取數據。 該實現允許急切地獲取已為其指定LAZY策略提示的數據

枚舉FetchType

暫無
暫無

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

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