ExPosts.hbm.xml 中的一段
----------------------------
        <set name="categorys" table="ex_post2cat" lazy="false" inverse="false" cascade="save-update">
            <key column="POST_ID"/>
            <many-to-many class="dao.org.oneboy.model.ExCategories" column="CATEGORY_ID" outer-join="auto"/>
        </set>
----------------------------ExCategories.hbm.xml 中的一段
-----------------------------
        <set name="posts" table="ex_post2cat" inverse="true" cascade="save-update" lazy="true">
            <key column="CATEGORY_ID"/>
            <many-to-many class="dao.org.oneboy.model.ExPosts" column="POST_ID"/>
        </set>
-----------------------------ExPost2cat.hbm.xml
-----------------------------
    <class name="dao.org.oneboy.model.ExPost2cat" table="ex_post2cat">
        <id name="id" type="java.lang.Integer">
            <column name="ID"/>
            <generator class="native"/>
        </id>
        <property name="postId" type="java.lang.Integer">
            <column name="POST_ID"/>
        </property>
        <property name="categoryId" type="java.lang.Integer">
            <column name="CATEGORY_ID"/>
        </property>
    </class>
-----------------------------

解决方案 »

  1.   

    hibernate多对多关联映射时,中间的关联表是没有必要映射出来的。你只需要ExPosts和ExCategories两个POJO对象,已经它们的两个映射文件。映射文件具体配置如下:
    在ExPosts.hbm.xml中:
    <set name="categorys"
    table="ex_post2cat" 
    cascade="all"
    lazy="true"
    inverse="true">
             <key column="POST_ID"/>
             <many-to-many class="dao.org.oneboy.model.ExCategories"
             column="CATEGORY_ID"/>
    </set>
    在ExCategories.hbm.xml中:
    <set name="posts"
    table="ex_post2cat" 
    cascade="all"
    lazy="true"
    inverse="true">
             <key column="CATEGORY_ID"/>
             <many-to-many class="dao.org.oneboy.model.ExPosts"
             column="POST_ID"/>
    </set>另外,你的ex_post2cat关联表中不要设置主键id了,它只需要两个字段用来关联即可。
    查询改为:
    Query query = session.createQuery("select posts from ExPosts posts left join fetch posts.categorys category where categorys.id=" + id);
    query.setFirstResult(start);
    query.setMaxResults(pagesize);
    return query.list();
      

  2.   

    问题解决了没有 IceCraft(心淡情浓) 说的有道理建议看看多对多关联映射的相关文档