【发布时间】:2018-07-14 22:20:02
【问题描述】:
我想测试https://github.com/JonkiPro/popcorn/blob/develop/popcorn-core/src/main/java/com/jonki/popcorn/core/jpa/service/MoviePersistenceServiceImpl.java#L153的方法。该类具有 @Transactional 注释,并且实体的列表是 LAZY 的,因此在应用程序运行时使用列表没有问题。 我写了一个测试
@Test
public void canCreateOtherTitle() throws ResourceException {
...
this.moviePersistenceService.createOtherTitle(
otherTitle,
this.movieRepository.findByIdAndStatus(MOV_1_ID, DataStatus.ACCEPTED)
.orElseThrow(IllegalArgumentException::new)
);
...
}
运行测试后出现异常
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.jonki.popcorn.core.jpa.entity.MovieEntity.otherTitles, could not initialize proxy - no Session
一行
at com.jonki.popcorn.core.jpa.service.MoviePersistenceServiceImpl.createOtherTitle(MoviePersistenceServiceImpl.java:162)
为什么会这样?该方法在应用程序正常运行期间可以正常工作,但在测试期间会引发异常。
【问题讨论】:
标签: java spring spring-mvc spring-boot