报以下错误
%%%% Error Creating SessionFactory %%%%
org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/jixiyan/po/Ostudent.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)Caused by: org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.jixiyan.po.Ostudent.ogrades
at org.hibernate.cfg.Mappings.addCollection(Mappings.java:124)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2066)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2041)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:359)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
at org.hibernate.cfg.Configuration.add(Configuration.java:669)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
... 90 more
在ograde表中有两个实体ostudent和oexampaper,后两个和前一个都是一对多的关系  
配置文件如下Ograde.hbm.xml-----------------------------
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="po.Ograde" table="OGRADE" schema="SCOTT" lazy="false">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="22" scale="0" />
            <generator class="increment" />
        </id>
        <many-to-one name="oexampaper" class="com.jixiyan.po.Oexampaper" fetch="select">
            <column name="EXAMID" precision="22" scale="0" />
        </many-to-one>
        <many-to-one name="ostudent" class="com.jixiyan.po.Ostudent" fetch="select">
            <column name="STUID" length="50" />
        </many-to-one>
        <property name="grade" type="java.lang.String">
            <column name="GRADE" length="50" />
        </property>
        <property name="time" type="java.lang.String">
            <column name="TIME" length="50" />
        </property>
    </class>
</hibernate-mapping>
-----------------------------------------------------------------------------------
Ostudent.hbm.xml-----------------------------------------------------------------<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.jixiyan.po.Ostudent" table="ostudent" catalog="scott">
        <id name="id" type="java.lang.String">
            <column name="id" length="50" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="50" not-null="true" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="50" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="sex" length="6" />
        </property>
        <property name="birthday" type="java.lang.String">
            <column name="birthday" length="50" />
        </property>
        <property name="tel" type="java.lang.String">
            <column name="tel" length="50" />
        </property>
        <property name="college" type="java.lang.String">
            <column name="college" length="30" />
        </property>
        <set name="ogrades" inverse="true" cascade="all">
            <key>
                <column name="ID" length="50" not-null="true" />
            </key>
            <one-to-many class="com.jixiyan.po.Ograde" />
        </set>
    </class>
</hibernate-mapping>
-----------------------------------------------------------------------------------------------
Oexampaper.hbm.xml----------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.jixiyan.po.Oexampaper" table="oexampaper" catalog="scott">
        <id name="id" type="java.lang.String">
            <column name="id" length="50" />
             <generator class="increment" />
        </id>
        <property name="type" type="java.lang.String">
            <column name="type" length="50" not-null="true" />
        </property>
        <property name="style" type="java.lang.String">
            <column name="style" length="50" not-null="true" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="name" length="200" not-null="true" />
        </property>
        <property name="examlevel" type="java.lang.String">
            <column name="examlevel" length="50" />
        </property>
        <property name="totalpoint" type="java.lang.String">
            <column name="totalpoint" length="50" />
        </property>
        <property name="totalque" type="java.lang.String">
            <column name="totalque" length="50" />
        </property>
        <property name="schoicenum" type="java.lang.String">
            <column name="schoicenum" length="50" />
        </property>
        <property name="schoicepoint" type="java.lang.String">
            <column name="schoicepoint" length="50" />
        </property>
        <property name="mchoicenum" type="java.lang.String">
            <column name="mchoicenum" length="50" />
        </property>
        <property name="mchoicepoint" type="java.lang.String">
            <column name="mchoicepoint" length="50" />
        </property>
        <property name="judgenum" type="java.lang.String">
            <column name="judgenum" length="50" />
        </property>
        <property name="judgepoint" type="java.lang.String">
            <column name="judgepoint" length="50" />
        </property>
        <property name="status" type="java.lang.String">
            <column name="status" length="20" />
        </property>
        <property name="statusGrade" type="java.lang.String">
            <column name="status_grade" length="20" />
        </property>
        <property name="time" type="java.lang.String">
            <column name="time" length="20" />
        </property>
        <set name="ogrades" inverse="true">
            <key>
                <column name="id" length="50" />
            </key>
            <one-to-many class="com.jixiyan.po.Ograde" />
        </set>
    </class>
</hibernate-mapping>
 关键是帮我看下一对多表的映射写对了没  谢谢啦

解决方案 »

  1.   

        你多的一方是不是应该写个<many-to-one />
      

  2.   

    Ograde.hbm.xml那里面写着呢啊   是不是 <set name="ogrades" inverse="true" cascade="all"> 
                <key> 
                    <column name="ID" length="50" not-null="true" /> 
                </key> 
                <one-to-many class="com.jixiyan.po.Ograde" /> 
            </set> 
    里面哪个字段写错了啊?
      

  3.   

    多对多的话,应该是many-to-many把.
    另外另外set节点中应该再配置一个table属性,多对多要产生一个中间表。
    另外你的key别都叫id,主键也叫id,肯定是不行的,建议你这样
    <set name="ogrades" table="exam_grade">
       <key column="exam_id"/>
    起点有意义的名字
      

  4.   

    谢谢大家啊  问题解决了  是一个主键自增长的问题   我表里面没有设置自增长  配置文件配置是native所有插入时会报错  谢谢大家热情的帮助哈