Hibernate:目标VM发生异常:无法懒惰地初始化集合

时间:2012-02-14 13:13:08

标签: java hibernate exception

我有UserCars 1对n。 映射:

用户

<set inverse="true" name="cars" table="CAR">
      <key>
        <column name="UserID" not-null="false"/>
      </key>
      <one-to-many class="entity3.Car"/>
</set>

汽车:

<many-to-one class="entity3.User"  name="user">
      <column name="UserID" not-null="false"/>
</many-to-one>

在我获得一些用户并关闭会话后,在调试器中,在user我看到PersistentSet cars,并将此例外视为值:

>Exception occurred in target VM: failed to lazily initialize a collection of role: entity3.User.cars, no session or session was closed 
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: entity3.User.cars, no session or session was closed

这是正常行为吗?这些例外是否会降低性能?

1 个答案:

答案 0 :(得分:1)

您将收到此异常,因为已用于获取User实体的会话已关闭(更可能是它必须在代码中的某处被销毁)。 如果您需要获取Cars集合,则必须确保在尝试访问User实体中的Cars属性时打开相同的会话。

我也陷入了这个陷阱。

我不认为例外本身会导致任何性能问题。