Hibernate no pudo inicializar proxy - no sesión

Mi código recupera toda la información relacionada con el usuario:

SessionFactory sessionFactory = HibernateUtilities.configureSessionFactory();
Session session = sessionFactory.openSession();
UserDetails ud = null;
Set<Address> userAddress = null;

try {
    session.beginTransaction();
    ud = (UserDetails) session.get(UserDetails.class, 1);
    userAddress = ud.getAddresses();
    session.getTransaction().commit();
} catch (HibernateException e) {
    e.printStackTrace();
    session.getTransaction().rollback();
} finally {
    session.close();
}

System.out.println(ud.getName());

for(Address addr: userAddress){
    System.out.println("State " + addr.getState());
}

losud.getAddresses() simplemente devuelve un conjunto deAddressEs del usuario.

Mi pregunta es: ¿por qué laud objeto todavía tiene su valor (por ejemplo, nombre) a pesar de que la sesión ya está cerrada?getAddresses() es una variable de instancia delUserDetails clase. Pero, ¿por qué no puedo recuperar su valor pero puedo recuperar variables de instancia regulares deUserDetails ¿clase?

ud.getAddresses() es un@EmbeddedCollection.

Respuestas a la pregunta(3)

Su respuesta a la pregunta