Весенние данные, JPA @ManyToOne ленивая инициализация не работает
Я знаю, что есть много подобных вопросов об этой беде, но ничего не работает для меня.
Я @ManyToOne отношения между Aim и Пользователем.
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false, updatable = false)
private User user;
и
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private Collection<Aim> userAims;
соответственно.
@Override
@Transactional(propagation = Propagation.REQUIRED)
@PreAuthorize("isAuthenticated() and principal.user.isEnabled() == true")
public Aim findById(String aimId) throws NumberFormatException, EntityNotFoundException {
Aim aim = null;
try {
aim = aimRepository.findOne(Long.parseLong(aimId));
} catch (NumberFormatException e) {
throw new InvalidDataAccessApiUsageException(e.getMessage(), e);
}
if (aim == null) throw new EntityNotFoundException("Aim with id: " + aimId + " not found!");
return aim;
}
@OneToMany ассоциации отлично работают с ленивой выборкой. Метод не вложен в другое @Transactional метод @Transactional строительство штраф.
таким образом, запись существует.
- классы пользователей и цель не финал и реализовать сериализуемые
- некоторые источники советуют поставить аннотации на геттеров. Он также не работа.
- @Fetch (FetchMode.SELECT) такая же ситуация =
- запрос через спящий режим результаты те же, но запрос HQL с левое соединение fetch работает отлично
- мой FK ПРИ ОБНОВЛЕНИИ КАСКАДА НА INSERT CASCADE
- необязательно = false тоже пробовал...
обратите внимание что у меня нет LazyInitException
спасибо заранее!
1 ответов
Я предполагаю, что код findById
метод, и по ссылке на "ленивая инициализация не работает" в заголовке, что вы хотите найти Aim
объект по его числовому идентификатору, а также связанный