1

什麼是防止使用JPA庫在以下情況下沒有會話的失敗方式:防止任何會議通過JPA回購方法的情況下,失敗

我有一個名爲X與關係@OneToManyfetch = FetchType.LAZY上課類Y.我在repostiory中創建了整個方法,然後將其傳遞給Service類,然後將其傳遞給Controller。

雖然我想x.getY()這是通過Lazy fetchType有關我得到一個錯誤(從休眠模式),以獲得從類X的對象Ÿ稱爲沒有會話

如何防止發生此錯誤?

回答

1

您必須在@Transactional方法中附上x.getY()調用或在調用層次結構中更高地移動事務邊界,以便調用也包括在內。

一般我不會比服務走高,所以如果你訪問該財產在控制器例如第一次那麼其他可能選項是:

  • 預先抓取所有需要的依賴,同時會話仍然打開(連接抓取)
  • 使用Hibernate.initialize(x.getY());事務上下文
  • 呼叫size方法對depenedent colletions到initialze他們x.getY().size內。
+0

我傾向於使用'@Transactional',但請告訴我,如果我是正確的 - 我需要使用'import org.springframework.transaction.annotation.Transactional;'? – bielas

+0

是的。你必須記住,你必須使用額外的配置(包掃描和事務管理)。退房http://www.baeldung.com/transaction-configuration-with-jpa-and-spring –

+0

即使我使用春季開機? – bielas

相關問題