LazyInitializationException dentro de um método @Transactional
Eu estou correndo para oorg.hibernate.LazyInitializationException
erro ao tentar acessar uma exceção carregada lenta ao executar o seguinte:
@Transactional
public void displayAddresses()
{
Person person = getPersonByID(1234);
List<Address> addresses = person.getAddresses(); // Exception Thrown Here
for(Address address : addresses)
System.out.println(address.getFullAddress());
}
Minhas entidades ficam assim:
@Entity
@Table("PERSON_TBL")
public class Person
{
...
@OneToMany(cascade=CascadeType.ALL, targetEntity=Address.class, mappedBy="person")
private List<Address> addresses;
...
}
@Entity
@Table("ADDRESS_TBL")
public class Address
{
...
@ManyToOne(targetEntity=Person.class)
@JoinColumn(name="PERSON_ID", referencedColumnName="PERSON_ID")
Person person;
...
}
Tive a impressão de que, usando a anotação @Transactional no meudisplayAddresses()
, manteria a sessão ativa até a conclusão do método, permitindo acessar a coleção de endereços preguiçosamente carregad
Estou esquecendo de algo
EDITA
De acordo com o conselho de Tomasz: Dentro do meudisplayAddresses()
, o status deTransactionSynchronizationManager.isActualTransactionActive(),
acabou sendofalse
.
Isso reduz o problema, mas por que minha transação não estaria ativa neste momento?