Java hibernate中的复合主键问题

Java hibernate中的复合主键问题,java,hibernate,Java,Hibernate,我正在创建一个hibernate应用程序,我想在其中创建一个复合主键。以下是我编写的映射文件: <?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"> <hiber

我正在创建一个hibernate应用程序,我想在其中创建一个复合主键。以下是我编写的映射文件:

<?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">
<hibernate-mapping>
  <class name="Fold.ChildrenPark" table="ChildrenPark">
    <composite-id>
    <key-property name="date" not-null="true"/>
    <key-property name="valveOffTime" not-null="true"/>
    <key-property name="valveOnTime" not-null="true"/>
    </composite-id>
    <property name="overHeadTankLevelAfterFilling"/>
    <property name="overHeadTankLevelBeforeFilling"/>
    <property name="rank"/>
  </class>
</hibernate-mapping>

所以我想知道这段代码缺少什么。我在网上搜索了一下,但没有找到任何有用的东西。这意味着什么?

有很多东西:

1/将dtd更改为:

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

致:


这将删除有关过时hibernate命名空间的警告


2/删除密钥属性的非空属性,密钥属性不存在此属性,因为PK属性不能为空。

yes。它可以工作。但我想知道我给出的dtd和您给出的dtd之间的区别是什么?@KushagraSinha看两个URL之间的区别新的URL是
www.hibernate.org
,而不是
hibernate.sourceforge.net
。从hibernate3.6开始,您必须将新的
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">