Hibernate jsf+;休眠:保存多对多关系

Hibernate jsf+;休眠:保存多对多关系,hibernate,session,jsf,lazy-initialization,Hibernate,Session,Jsf,Lazy Initialization,我正在使用Hibernate3.2.5和JSF2.1 我有表客户、客户机会和机会,即建立了多对多关系 我已经映射了所有表,即模型 要保存帐户,我使用以下代码: public void saveAccount(Accounts current) { Transaction tx = session.beginTransaction(); session.save(current); session.flush(); tx.commit(); } 保存A

我正在使用Hibernate3.2.5和JSF2.1

我有表客户、客户机会和机会,即建立了多对多关系

我已经映射了所有表,即模型

要保存帐户,我使用以下代码:

public void saveAccount(Accounts current) {


    Transaction tx = session.beginTransaction();


    session.save(current);
    session.flush();

    tx.commit();

}
保存Accounts对象时出现以下错误:

failed to lazily initialize a collection of role: models.Accounts.accountsOpportunitieses, no session or session was closed
我是JSF和Hibernate新手,无法理解Hibernate为什么不保存我的对象

更新:

我已使用以下注释更新了Accounts模型:

@ManyToMany(fetch= FetchType.EAGER)
 private Set<AccountsOpportunities> accountsOpportunitieses = new HashSet<AccountsOpportunities>(0);
@ManyToMany(fetch=FetchType.EAGER)
私有集accountsOpportunitieses=新哈希集(0);

数据仍然没有保存到数据库中。我现在收到错误,例如会话已关闭。

可能重复:是的,它看起来像是重复的@Gaurav:accounts或accounts\u Opportunity中的某些值尚未加载,但在保存时,它们是通过延迟加载加载的。最初加载该对象的会话已关闭。请。阅读关于延迟加载的文章。我实际上读到了这个答案。但是我不明白如何设置lazy=false。我简要地阅读了lazy加载。我喜欢延迟加载的概念。我的意思是,我不想抓住所有与客户相关的机会,除非我绝对必须这样做。难道没有办法指示Hibernate只更新我试图更新的帐户,而忘记相关的机会吗?