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?

questionAnswers(4)

yourAnswerToTheQuestion