我在返回实体的 Web 层中使用服务层组件。该实体具有延迟加载的集合。这是资源对象和域对象之间映射过程的一部分。我从 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?宠物对象是在 web 层中检索到的,但我只访问事务方法中的属性。
我正在使用 Spring 3.2.x 和 Hibernate 4.2.x
我的应用程序(RESTful 后端系统)中发生的步骤。
- 用户提交的资源只有不同实体的 id。我正在将现有的实体相互关联。
- Spring MVC 部分将资源对象映射到域对象并根据 id 查找实体。这是通过在方法上使用@Transactional 注释为@Service 的组件来完成的。
- 域对象被传递给我正在访问关系的另一个服务,但是由于它是延迟加载的,因此失败。但是,该方法也有@Transactional。