Java 未能延迟初始化角色的集合

Java 未能延迟初始化角色的集合,java,hibernate,lazy-loading,Java,Hibernate,Lazy Loading,我有两个类具有一对多关系:OpinionPoll(一)和PollResult(多) 当我执行下面的条件查询时,出现以下错误: 未能延迟初始化角色集合:com.bonrix.gcm.demo.model.OpinionPoll.pollResults,无法初始化代理-无会话。 我只想查询父(OpinionPoll类)记录。但是我得到了上面的错误,由于我的要求,我不得不使用FetchType=Lazy 以下是我的两个类的映射: Opinionpoll mapping: @OneToMany(cas

我有两个类具有一对多关系:
OpinionPoll
(一)和
PollResult
(多)

当我执行下面的条件查询时,出现以下错误: 未能延迟初始化角色集合:com.bonrix.gcm.demo.model.OpinionPoll.pollResults,无法初始化代理-无会话。

我只想查询父(OpinionPoll类)记录。但是我得到了上面的错误,由于我的要求,我不得不使用FetchType=Lazy

以下是我的两个类的映射:

Opinionpoll mapping:

@OneToMany(cascade=CascadeType.ALL,mappedBy="opinionPoll",fetch=FetchType. LAZY)
private List<PollResult> pollResults = new ArrayList<PollResult>() ;


PollResult mapping:

@ManyToOne(cascade = { CascadeType.ALL },fetch=FetchType.LAZY)
@JoinColumn(name = "poll_id")           
private OpinionPoll opinionPoll;


Query:

Criteria criteria = 
  session.createCriteria(OpinionPoll.class)
    .add(Restrictions.eq("clientName", username))
    .addOrder(Order.desc("pollId"))
    .setMaxResults(maxpoll)
    .setFirstResult(offset);
opinionPolls = criteria.list();
opinion波尔映射:
@OneToMany(cascade=CascadeType.ALL,mappedBy=“opinionPoll”,fetch=FetchType.LAZY)
private List pollResults=new ArrayList();
PollResult映射:
@manytone(cascade={CascadeType.ALL},fetch=FetchType.LAZY)
@JoinColumn(name=“poll\u id”)
私人意见池意见池;
查询:
标准=
session.createCriteria(OpinionPoll.class)
.add(Restrictions.eq(“clientName”,username))
.addOrder(Order.desc(“pollId”))
.setMaxResults(maxpoll)
.setFirstResult(偏移量);
opinionPolls=criteria.list();

您正在尝试

40 : using(var session = factory.OpenSession())
41 : {
42 :        // load object in your case `OpinionPoll`
43 : }

// access collection on object , in your case `PollResult`

44 : var firstResult =     OpinionPoll.PollResults.First()

在会话关闭之前(第43行之前),您需要访问
PollResults
,会话将在访问时惰性地加载轮询结果。

检查会话关闭的原因。正在管理的
NHibernate会话在哪里?