【发布时间】:2012-11-09 15:41:39
【问题描述】:
我的代码检索与用户相关的所有信息:
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());
}
ud.getAddresses() 只是返回用户的一组Addresses。
我的问题是:为什么即使会话已经关闭,ud 对象仍然具有它的值(例如,名称)? getAddresses() 是 UserDetails 类的实例变量。但是为什么我不能检索它的值,但我可以检索UserDetails 类的常规实例变量?
ud.getAddresses() 是一个@EmbeddedCollection。
【问题讨论】:
-
"@EmbeddedCollection" - 你的意思是
@ElementCollection?
标签: java hibernate persistence lazy-evaluation lazy-initialization