【发布时间】:2017-09-18 13:40:57
【问题描述】:
我完全对 Spring data + hibernate 的一个问题感到困惑
我们有一项正在迁移到 V2 的 Restful 服务。
所以旧控制器看起来像
@Api(tags = {"assignments"})
@RestController
@CheckedTransactional
public class AssignmentListController {
@Inject
private AssignmentListService assignmentListService;
//REST function
public list() {....}
}
REST函数列表调用AssignmentListService加载assignment,这是一个集合,懒加载一些数据。它的作品非常好。
我所做的是将这个控制器复制为名称AssignmentListControllerV2,它看起来像
@Api(tags = {"assignments"})
@RestController
@CheckedTransactional
public class AssignmentListControllerV2 {
@Inject
private AssignmentListService assignmentListService;
@Inject
private AssignmentDtoMapper assignmentDtoMapper;
public list() {...}
}
代码相同,只是添加了AssignmentDtoMapper bean,它是使用MapStruct创建的。
现在的问题是,当我调用这个新服务时,不知何故我得到了一个延迟加载异常。错误是
无法初始化代理 - 没有会话
我非常需要一些帮助,因为我不知道发生了什么。我刚刚将代码复制到一个新类中,但它失败了。
【问题讨论】:
-
我想如果你再分享一些代码会很好。您的实体、服务方法,并解释在将所有内容发送回客户端之前如何转换它(在两个版本中)。你的映射器是做什么的?
-
代码太大了,我不能分享,它也是一个现有的应用程序,由于隐私,我不确定我是否可以分享它的代码,我也怀疑服务代码是否有任何区别相同的代码在 V1 中运行良好。
-
显然异常结果是不同的。这些 Lazy 对象从未作为默认查询的一部分加载,但定义了一个 Aspect,稍后在对象上设置该数据。方面设置在模式 .*Controller. 上的事实,不幸的是我的控制器的名称是 ControllerV2,这导致了问题。无论如何,感谢您的帮助。
标签: spring spring-data spring-data-rest