事务方法中的LazyLoadingException

时间:2013-11-13 20:19:21

标签: java spring hibernate rest java-ee

我在我的网络图层中使用一个返回实体的服务图层组件。此实体具有延迟加载的集合。这是资源对象和域对象之间的映射过程的一部分。我从REST客户端获取ID,并根据id查找域对象。

映射后,这些对象将传递给服务层:

@Transactional
public Result assess(Pet pet) { ... }

映射示例:

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "owner_id", nullable = false)
public Set<Owner> getOwners() {
    return owners;
}

为什么我在这个方法中得到LazyLoadingException? pet对象是在web层中检索的,但我只访问事务方法中的属性。

我正在使用Spring 3.2.x和Hibernate 4.2.x

我的应用程序中发生的步骤(RESTful后端系统)。

  1. 用户提交的资源仅包含不同实体的ID。我正在将现有的entiteis相互联系起来。
  2. Spring MVC部件将资源对象映射到域对象,并根据id查找实体。这是通过在方法上使用@Transactional注释为@Service的组件来完成的。
  3. 域对象被传递给我正在访问关系的另一个服务,但是由于它是延迟加载的,因此失败。但是,该方法也有@Transactional。

0 个答案:

没有答案