Nie udało się leniwie zainicjować zbioru roli: someEnttiy.otherTitles

0

Chcę przetestować metodę https://github.com/JonkiPro/popcorn/blob/develop/popcorn-core/src/main/java/com/jonki/popcorn/core/jpa/service/MoviePersistenceServiceImpl.java#L153. Klasa ma adnotację @Transactional, a listy encji są LAZY, więc nie ma problemu z używaniem listy podczas działania aplikacji. Napisałem test

 @Test
public void canCreateOtherTitle() throws ResourceException {
    ...

    this.moviePersistenceService.createOtherTitle(
            otherTitle,
            this.movieRepository.findByIdAndStatus(MOV_1_ID, DataStatus.ACCEPTED)
                    .orElseThrow(IllegalArgumentException::new)
    );

   ...
}

po uruchomieniu testów otrzymuję wyjątek

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

w linii

    at com.jonki.popcorn.core.jpa.service.MoviePersistenceServiceImpl.createOtherTitle(MoviePersistenceServiceImpl.java:162)

czyli tutaj w kodzie https://github.com/JonkiPro/popcorn/blob/develop/popcorn-core/src/main/java/com/jonki/popcorn/core/jpa/service/MoviePersistenceServiceImpl.java#L162

Cały test jest tutaj https://pastebin.com/fewHBUff

Na SO https://stackoverflow.com/questions/51343821/failed-to-lazily-initialize-a-collection-of-rolesomeenttiy-othertitles zasugerowano, abym dodał w teście również adnotację @Transactional, ale powoduje to wyjątek

Cannot start new transaction without ending existing transaction

Dlaczego podczas testów, listy ładowane leniwie nie są inicjalizowane mimo adnotacji @Transactional? Przypomnę, że podczas normalnego uruchomienia aplikacji, to wszystko działa poprawnie.

1

Zobacz
https://jira.spring.io/browse/SPR-12554

Jak wstawiasz @Transactional w test to wywal wtedy pozostałe (explicite deklarowane) listenery.

1

Łącznie 11 adnotacji na trzech klasach by zrobić jeden test? WTF. Też mi się wydaje że @Transactional powinien załatwić sprawę, ale nie dam głowy bo połowy tych adnotacji nawet na oczy nie widziałem, więc może któraś z nich robi jakąś niewytłumaczalną magię.

1 użytkowników online, w tym zalogowanych: 0, gości: 1