0

在 Hibernate 中,假设您有一个名为部门的类,它包含一个员工列表。有没有办法检查员工列表以确定它是否已经初始化?似乎无论您访问什么属性,它都会为您提供惰性初始化程序异常。有什么方法可以测试它的初始化而不会出现异常?

我想看看它是否已经初始化,如果没有,只需查询数据并填写它。

4

2 回答 2

1

您不需要手动进行查询 - 延迟初始化的全部意义在于 ORM 将在需要访问数据时为您处理它。

如果您遇到延迟初始化异常,则意味着没有打开休眠会话,因此无法获取子项。

使用 open-session-in-view (在请求的生命周期内保持会话打开,在 Web 应用程序中),或在加载父级时预先初始化集合(这具有加载数据的开销,可能不需要,如果它总是需要,这没关系)。

于 2011-10-26T21:57:46.767 回答
1

有没有办法检查员工列表以确定它是否已经初始化?

您可以使用Hibernate.isInitialized()检查休眠实体是否已初始化。

我想看看它是否已经初始化,如果没有,只需查询数据并填写它。

您可以使用Hibernate.initialize()来强制初始化休眠实体。如果尚未初始化,它将为您查询和填充数据。

于 2011-10-27T01:41:16.810 回答