Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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
Java Hibernate:如何返回复合id?_Java_Hibernate - Fatal编程技术网

Java Hibernate:如何返回复合id?

Java Hibernate:如何返回复合id?,java,hibernate,Java,Hibernate,我有这个复合id: <composite-id class="Entities.PackageId" name="id"> <key-property name="id" type="int"> <column name="id"/> </key-property> <key-property name="idProduct" type="int"> <column name="idProduct"/&

我有这个复合id:

<composite-id class="Entities.PackageId" name="id">
  <key-property name="id" type="int">
    <column name="id"/>
  </key-property>
  <key-property name="idProduct" type="int">
    <column name="idProduct"/>
  </key-property>
</composite-id>
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">
<!-- Generated 25/02/2011 15:56:00 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class catalog="p2p" name="Entities.Package" table="Package">
    <composite-id class="Entities.PackageId" name="id">
      <key-property name="id" type="int">
        <column name="id"/>
      </key-property>
      <key-property name="idProduct" type="int">
        <column name="idProduct"/>
      </key-property>
    </composite-id>
    <many-to-one class="Entities.User" fetch="select" name="User">
      <column length="50" name="email" not-null="true"/>
    </many-to-one>
    <many-to-one class="Entities.Product" fetch="select" insert="false" name="Product" update="false">
      <column name="idProduct" not-null="true"/>
    </many-to-one>
    <property name="quantity" type="int">
      <column name="quantity" not-null="true"/>
    </property>
    <property name="mode" type="char">
      <column length="1" name="mode" not-null="true"/>
    </property>
    <property name="unity" type="string">
      <column length="25" name="unity" not-null="true"/>
    </property>
    <property name="description" type="string">
      <column length="150" name="description" not-null="true"/>
    </property>
  </class>
</hibernate-mapping>

复合ID通常意味着列将引用其他表。它们在其他表中自动递增是有意义的,而不是在这个表中

如果它们都是自动递增的,那么就不需要复合id——每一列都能够唯一地标识行


如果要使引用的实体具有自动递增的值,请检查并提问(对于基于xml和注释的方法)

,但Netbeans会根据我的数据库自动生成此映射。在我的db包中有一个产品id,一个外键。这是错的吗?@Valter Henrique让netbeans知道你的模式。我不知道;)@Valter Henrique用一个简短的DDL来更新您的答案,我是hibernate新手,所以我不知道NetBeans生成的映射是否正确。它是?
<?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">
<!-- Generated 25/02/2011 15:56:00 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class catalog="p2p" name="Entities.Package" table="Package">
    <composite-id class="Entities.PackageId" name="id">
      <key-property name="id" type="int">
        <column name="id"/>
      </key-property>
      <key-property name="idProduct" type="int">
        <column name="idProduct"/>
      </key-property>
    </composite-id>
    <many-to-one class="Entities.User" fetch="select" name="User">
      <column length="50" name="email" not-null="true"/>
    </many-to-one>
    <many-to-one class="Entities.Product" fetch="select" insert="false" name="Product" update="false">
      <column name="idProduct" not-null="true"/>
    </many-to-one>
    <property name="quantity" type="int">
      <column name="quantity" not-null="true"/>
    </property>
    <property name="mode" type="char">
      <column length="1" name="mode" not-null="true"/>
    </property>
    <property name="unity" type="string">
      <column length="25" name="unity" not-null="true"/>
    </property>
    <property name="description" type="string">
      <column length="150" name="description" not-null="true"/>
    </property>
  </class>
</hibernate-mapping>