在我的Java程序中,我想将Hibernate持久对象封送到XML。
为此,我使用JAXB。问题是在编组对象时我得到NullPointerException
。
这是由延迟加载提取策略引起的。当切换到渴望获取编组过程时,
我使用getter而不是变量,因此Hibernate可以初始化对象。我没有LazyInitializationException
因此没有关闭会话等。
伪代码:
Session s = sessionFactory.openSession();
Criteria crit = s.createCriteria(Entity.class);
List list = crit.list();
Entity entity = (Entity) list.get(0)
try {
DocumentResult dr = new DocumentResult();
context = JAXBContext.newInstance(entity.getclass());
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(entity, dr);
}
catch(JAXBException e) {
// ignore
}
答案 0 :(得分:0)
如果您正在编组实体的延迟加载属性,则它不能分离,也就是说它需要与活动会话相关联。您的选择是:
merge
您的实体加入其中,然后执行
编组。另一方面,我发现你得到一个空指针异常很奇怪。您必须在代码中的某处吞下LazyInitializationException
。