我实际上遇到了Hibernate的一个问题。我必须说我对此有点新,但我拥有的代码已经存在,并且由知道Hibernate的人构建。问题是我试图将Hibernate版本从v3.2.5迁移到3.6.9。实际的代码可以工作100%,但是当我更改JAR和所有弃用的功能时,相同的代码不再适用。所以,这里是我的问题:
我有一个Client
对象,它与Status
(我们保留状态的历史记录)具有多对多关联。默认情况下,这个集合是LAZY。但是,当我做客户研究时,我需要这些信息,所以我使用了Criteria API。我当时状态的集合设为跃跃欲试,像这样:带懒惰集合的Hibernate LazyInitializationException
Criteria lStatuCriteria = lIntrvCriteria.createCriteria(SimIntrv.SIM_STATU_INTRVS, Criteria.LEFT_JOIN);
然后我用Restrictions.in()
功能,以过滤状态。问题是,在3.2.5中,当调用Client对象的函数list()
时,集合(在配置文件中设置为lazy)被正确加载。另一方面,在3.6.9中,集合未加载。我尝试使用setFetchMode设置fetchmode,但它不起作用。
任何线索?
向我们展示更多您的代码。我认为你的代码依赖于一个现在固定的Hibernate bug来正常工作。使用setFetchMode应该可以工作,但这一切都取决于你是否正确使用它。没有看到代码,就不可能说。 – 2012-01-16 09:32:47