Мой проект использует, чтобы иметь много метода @transactional везде. Теперь из -за бизнес -логики я не хочу отказываться, когда у меня есть проблема, но хочу установить свой объект в статус ошибки (он же сохранен в DB, так что определенно не откат), поэтому я удалил несколько @Transactional для начала. />
Теперь вот моя следующая сбоя и поиск решений и поиск решений: < /p>
Мы используем конфигурацию аннотации, поэтому нет конфигурации XML здесь. а затем удалил (я ясно вижу ее в журналах при добавлении конфигурации, чтобы увидеть их), что, по -видимому, нормально в соответствии с пружинной документацией. Загрузите ленивый атрибут, который я хочу использовать с помощью hibernate.initialize (), а затем он не порождает LazyInitializationException. Мне кажется тривиальным, что если я использую ленивую нагрузку, я хочу, чтобы Hibernate создал сеанс (что он, кажется, вполне способен делать при выполнении hibernate.initialize ()), чтобы автоматически загрузить дату. Я действительно чувствую, что упускаю что -то основное в Hibernate, ленивом загрузке и сеансах, что делает весь этот беспорядок намного менее сложным. < /P>
Вот пример: < /p>
@Entity
@Table(name = "tata")
public class Tata {
@Id
@Column(name = "tata_id")
private Long id;
// getter / setter etc
}
@Entity
@Table(name = "toto")
public class Toto {
@Id
@Column(name = "toto_id")
private Long id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tata_id")
private Tata tata;
// getter / setter etc
}
@Service("totoManager")
public class TotoManager extends GenericManagerImpl {
@Autowired
private EntityManager entityManager;
@Autowired
private TotoRepository totoRepository;
public void doSomethingWithTotos() throws XDExceptionImpl {
List totos = this.totoRepository.findAll();
for (toto toto : totos) {
// LazyInitializationException here
LOGGER.info("tata : " + toto.getTata().getId());
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/552 ... lazy-loadi