В основном я пытаюсь получить сущность, которая имеет отношение LAZY к другому объекту. Ниже приведены две вещи, которые я пробовал. Первый работает, второй - нет, и я не понимаю, почему. Все, что я хочу, - это получить сущность из базы данных. Причина, по которой я поместил это в другой метод, - это то, что я не хочу, чтобы первый был @Transactional, потому что это может занять некоторое время. Обратите внимание, что я не сохраняю или даже не обращаюсь к базе данных снова в первом методе, мне просто нужно прочитать из db один раз.
Метод 1 (работает, как ожидалось):Не может ленивый выбор - нет сеанса внутри @Transactional метод
@Override
@Transactional
public void sendEmailToUser(Long exhibitorId) {
EmailExhibitorTO exhibitorTO = findExhibitorById(exhibitorId);
}
private EmailExhibitorTO findExhibitorById(Long id){
return converter.convert(exhibitorRepository.findById(id), EmailExhibitorTO.class);
}
Все здесь хорошо, я получаю сущность и ленивое инициализирован объект, а также.
Метод 2 (не работает):
@Override
public void sendEmailToUser(Long exhibitorId) {
EmailExhibitorTO exhibitorTO = findExhibitorById(exhibitorId);
}
@Transactional
private EmailExhibitorTO findExhibitorById(Long id){
return converter.convert(exhibitorRepository.findById(id), EmailExhibitorTO.class);
Это, однако, не работает. Ошибка:
Существует исключение отображения, но это связано с тем, что ленивый объект не может быть извлечен.
Я, наверное, просто глуп, но если что-то я не понимаю, объясните.
Заранее спасибо.
Звучит разумно, не могли бы вы уточнить немного на эту тему? Есть ли обходной путь? – Sikor
Вы можете найти объяснение [здесь] (http://stackoverflow.com/questions/32994544/spring-cacheable-not-caching/32999744#32999744) – Ruben
Большое спасибо. – Sikor