Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate集合映射_Hibernate - Fatal编程技术网

Hibernate集合映射

Hibernate集合映射,hibernate,Hibernate,我对Hibernate集合映射有点迷茫。尝试在Eclipse Hibernate透视图中添加持久性配置会引发以下问题: Invalid ORM mapping file. Error parsing XML (line14 : column 16): The content of element type "list" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(elemen

我对Hibernate集合映射有点迷茫。尝试在Eclipse Hibernate透视图中添加持久性配置会引发以下问题:

Invalid ORM mapping file.
Error parsing XML (line14 : column 16): The content of element type "list" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".
Error parsing XML (line17 : column 15): The content of element type "map" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(map-key|composite-map-key|map-key-many-to-many|index|composite-index|index-many-to-many|index-many-to-any),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".
实际映射配置如下所示:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.Server" table="server" schema="imdb">
        <id name="serverId" type="java.lang.Integer">
            <column name="SERVER_ID" />
            <generator class="identity" />
        </id>   
        <list name="sessions" inverse="true">
            <key column="serverID" not-null="true"/>
            <list-index column="SERVER_SESSION_NUMBER" />           
            <one-to-many class="core.Session"/>
        </list> 
        <map name="users" inverse="true">
            <key column="serverID" not-null="true"/>
            <map-key type="string" column="SERVER_USER_NUMBER"/>
            <one-to-many class="core.User"/>
        </map>  
    </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.User" table="user" schema="imdb">
        <id name="userId" type="java.lang.Integer">
            <column name="USER_ID" />
            <generator class="identity" />
        </id>   
        <property name="login" column="LOGIN" type="string" />          
        <property name="online" column="ONLINE" type="boolean" />   
        <property name="last_message" column="LAST_MESSAGE" type="string" />  
        <property name="newmessage" column="NEW_MESSAGE" type="boolean" />  
        <many-to-one name="serverID" column="SERVER_ID" class="core.Server"/>
        <list name="sessions" inverse="true">
            <key column="USER_ID" not-null="true"/>
            <one-to-many class="core.Session"/>
            <list-index column="USER_SESSION_NUMBER" />
        </list>     
    </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.Session" table="session" schema="imdb">
        <id name="sessionID" type="java.lang.Integer">
            <column name="SESSION_ID" />
            <generator class="identity" />
        </id>   
        <many-to-one name="serverID" column="SERVER_ID" class="core.Server"/>
        <many-to-one name="userID" column="USER_ID" class="core.User/>
    </class>
</hibernate-mapping>

顺序是特定的(并在错误消息中提供给您)。这不是hibernate,而是XML模式

因此,请正确确定标签的顺序,例如: 需要在 等

编辑: 并不是所有的桌子都错了。第一个没问题。第二个有两个错误,应该是

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.User" table="user" schema="imdb">
        <id name="userId" type="java.lang.Integer">
            <column name="USER_ID" />
            <generator class="identity" />
        </id>   
        <property name="login" column="LOGIN" type="string" />          
        <property name="online" column="ONLINE" type="boolean" />   
        <property name="last_message" column="LAST_MESSAGE" type="string" />  
        <property name="newmessage" column="NEW_MESSAGE" type="boolean" />  
        <list name="sessions" inverse="true">
            <key column="USER_ID" not-null="true"/>
            <list-index column="USER_SESSION_NUMBER" />
            <one-to-many class="core.Session"/>          
        </list>   
        <many-to-one name="serverID" column="SERVER_ID" class="core.Server"/>
    </class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.Session" table="session" schema="imdb">
        <id name="sessionID" type="java.lang.Integer">
            <column name="SESSION_ID" />
            <generator class="identity" />
        </id>   
        <many-to-one name="serverID" column="SERVER_ID" class="core.Server"/>
        <many-to-one name="userID" column="USER_ID" class="core.User"/>
     </class>
</hibernate-mapping>

您的第三个报价是错误的,因为它在class=“core.User”之后缺少一个报价,应该是

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.User" table="user" schema="imdb">
        <id name="userId" type="java.lang.Integer">
            <column name="USER_ID" />
            <generator class="identity" />
        </id>   
        <property name="login" column="LOGIN" type="string" />          
        <property name="online" column="ONLINE" type="boolean" />   
        <property name="last_message" column="LAST_MESSAGE" type="string" />  
        <property name="newmessage" column="NEW_MESSAGE" type="boolean" />  
        <list name="sessions" inverse="true">
            <key column="USER_ID" not-null="true"/>
            <list-index column="USER_SESSION_NUMBER" />
            <one-to-many class="core.Session"/>          
        </list>   
        <many-to-one name="serverID" column="SERVER_ID" class="core.Server"/>
    </class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="core.Session" table="session" schema="imdb">
        <id name="sessionID" type="java.lang.Integer">
            <column name="SESSION_ID" />
            <generator class="identity" />
        </id>   
        <many-to-one name="serverID" column="SERVER_ID" class="core.Server"/>
        <many-to-one name="userID" column="USER_ID" class="core.User"/>
     </class>
</hibernate-mapping>


感谢您的快速回答。我并不清楚顺序可能很重要,但我会尝试。JB Nizet-不是在第二个区块中。我尝试根据错误描述中的顺序更改顺序,但没有效果。请参阅更新的答案。2和3错误,无法正常工作,2不正常,3错误为你的答案唱一首歌。我会改变配置并报告。