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会话在哪里?