我有一个通过 Spring-MVC 公开的 REST 服务。我有一个特定的方法,它被正确映射并通过 HTTP 调用进行调用。我的 Spring 应用程序包含 HibernateTransactionManager
,并且事务是通过 @Transactional
注释配置的。我这样注释该方法:
@Transactional(readOnly = true)
@Override
@RequestMapping(value = "/start", method = RequestMethod.GET)
@ResponseBody
public List<SomeObject> start(....)
每当我调用 HTTP 方法时,我的 org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
都会在我的应用程序中绑定(bind)一个 org.hibernate.LazyInitializationException
语境。 @Transactional
注释对于 MessageConverter
也有效吗?
最佳答案
您的转换器类显然正在读取一个配置为在 Hibernate 配置中延迟收集的字段。
两种可能的解决方案:
- 扩展您的交易方法以包含转换器方法。
- 编辑您的 Hibernate 配置以立即获取导致
LazyInitializationException
的字段。 (例如,该字段可以是数据库中两个表之间关系的一部分。)
关于model-view-controller - MessageConverter 中带有 @Transactional 注释的 LazyInitializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810569/