Имею сущность User и сущность Thing.
Сущность Thing ссылается на User с отношением ManyToOne:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
@NotNull
private User user;
Мне надо вытащить Thing вместе с User, к которому он относится, причём User должен вытаскиваться как реальный объект, а не обёртка. Как это сделать?
Для того, чтобы вытащить сущность, которая отмечена FetchType.Lazy, необходимо использовать метод Hibernate.unproxy(), который возвращает реальную сущность, без обёртки. Разумеется, этот метод необходимо вызывать в транзакции.
Конкретно для моего примера это выглядело бы так:
@Transactional
public void getWithUser(int id) {
Thing thing = repository.findById(id);
thing.setUser(Hibernate.unproxy(thing.getUser()));
return thing;
}
Продвижение своими сайтами как стратегия роста и независимости