Java LazyInitializationException与映射集合

Java LazyInitializationException与映射集合,java,hibernate,Java,Hibernate,我知道这是一个老生常谈的问题,但我找不到解决办法。我有两个bean,其中一个有HashMapcollection。我尝试阅读此集合时遇到异常。已指定映射配置以加载此集合 我的环境是: Hibernate4.2.0 mysql连接器java 5.1.24 我还有两颗豆子: public class FeaturedDoc { private Long id; private Map<Feature, Float> features; public Feat

我知道这是一个老生常谈的问题,但我找不到解决办法。我有两个bean,其中一个有
HashMap
collection。我尝试阅读此集合时遇到异常。已指定映射配置以加载此集合

我的环境是:

  • Hibernate4.2.0
  • mysql连接器java 5.1.24
我还有两颗豆子:

public class FeaturedDoc {
    private Long id;
    private Map<Feature, Float> features;

    public FeaturedDoc() {
        features = new HashMap<Feature, Float>();
    }
   (getters and setters)
}
此bean具有以下映射:

<class name="Feature" table="FEATURE">
    <id name="id" type="long" column="ID">
        <generator class="increment"/>
    </id>
    <property name="name" length="255" type="string" unique="true" column="NAME" index="INDEX_NAME"/>
    <property name="internalId" type="long" unique="true" not-null="false" column="INTERNAL_ID" index="INDEX_INTID"/>
    <sql-insert>insert into FEATURE (NAME, INTERNAL_ID, ID) values (?, ?, ?) on duplicate key update ID = ID</sql-insert>
</class>

<class name="FeaturedDoc" table="FEATURED_DOC">
    <id name="id" type="long" column="ID">
        <generator class="increment"/>
    </id>
    <map  name="features" table="DOC_FEATURE" cascade="all" lazy="false" fetch="join">
        <key column="ID"></key>
        <map-key-many-to-many column="FEATURE_ID" class="Feature"/>
        <element column="value" type="float"/>
    </map>
</class>
当我尝试做这样的事情时:

FeaturedDoc fd = daoService.read(26);
System.out.println(fd.getFeatures());
我有个例外

org.hibernate.LazyInitializationException:无法初始化代理-无会话


您知道该如何修复此错误吗?

假设其他一切都正常(在映射中),您是否尝试将
lazy=“false”
放在
cascade=“all”
之前。我发现这是我的映射中的一个问题,导致了这个
LazyInitializationException
错误


此顺序显示在以下Hibernate参考中:

假设其他一切都正常(在映射中),您是否尝试将
lazy=“false”
放在
cascade=“all”
之前。我发现这是我的映射中的一个问题,导致了这个
LazyInitializationException
错误


此顺序显示在以下Hibernate参考中:

我已解决此问题!原因是在
功能
类中。它没有
hashCode
equals
函数。实现这些功能后,一切都变得正常。

我已经解决了这个问题!原因是在
功能
类中。它没有
hashCode
equals
函数。实现这些函数后,一切都正常了。

您知道我应该如何修复此错误吗?您知道我应该如何修复此错误吗?是的,我已经尝试过,但不起作用。事实上,我不认为属性的顺序是问题所在。是的,我试过了,但不起作用。事实上,我不认为属性的顺序是问题所在。
public FeaturedDoc read(long id) {
    FeaturedDoc fd = null;
    try {
        session.beginTransaction();
        fd = session.get(FeaturedDoc.class, id);
        session.getTransaction().commit();
    } catch (Exception e) {
        e.printStackTrace();
        session.getTransaction().rollback();
    } finally {
        close();
    }
    return fd;
}
FeaturedDoc fd = daoService.read(26);
System.out.println(fd.getFeatures());