一个parent/child模型中,clientt端定义了many-to-one,在parent端设置one-to-many,双方都设置了lazy加载。
通过HibernateTemplate.get方法得到实体,那么实体中的延迟加载部分是一个proxy。
问题如下
这种做法并不是很优雅,如果是用find()方法,还需要对结果集进行遍历设置,非常麻烦。
请高手赐教!
通过HibernateTemplate.get方法得到实体,那么实体中的延迟加载部分是一个proxy。
问题如下
- 在get方法后,session已关闭,通过什么方式不使org.hibernate.LazyInitializationException到处蔓延;
- 如果不希望proxy对象延伸到表现层和service层,那么要如何处理;
- 如果在表现层和service层访问client.getParent(),要返回一个parent对象,其中只有代理主键有赋值,那么要怎么处理;
- 如果在表现层和service层访问parent.getChildren(),要得到一个size为0的List(不是proxy)要怎么处理。
java 代码
- Client client = (Client)get(Client.class, id);
- if (client == null) return null;
- if (client.getParent() != null)
- client.setParent(new Parent(client.getParent().getId()));
- return client;
- Parent parent = (Parent)get(Parent.class, id);
- if (parent == null) return null;
- parent.setChildren(new ArrayList<Child>());
- return parent;
请高手赐教!