0
我想在數據庫的兩個字段之間建立多對一的關係。我正在使用PostgreSQL數據庫和Hibernate。這些表是ApplicationField和Device。第一個有兩列:AppFieldId和Name。第二個有NodeId,Description和AppFieldId。對於ApplicationField Hibernate映射是:Hibernate中的多對一關係
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 05-may-2011 13:21:52 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.cartif.database.ApplicationField" table="APPLICATIONFIELD">
<id name="iAppFieldId" column="applicationfieldid" type="java.lang.Integer">
<generator class="sequence">
<param name="sequence">s_applicationfield</param>
</generator>
</id>
<property column="name" lazy="false" name="name" type="java.lang.String"/>
<set name="devices">
<key column="appfieldid" />
<one-to-many column="nodeid" class="com.cartif.zigbee.device.Device"/>
</set>
</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">
<!-- Generated 07-abr-2011 13:29:19 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.cartif.zigbee.device.Device" table="Device">
<id column="nodeid" name="iIdentifier" type="java.lang.Integer"/>
<property column="description" generated="never" lazy="false" name="description" type="java.lang.String"/>
<set name="appField">
<key column="nodeid"/>
<many-to-one column="appfieldid" class="com.cartif.database.ApplicationField"/>
</set>
</class>
</hibernate-mapping>
在Java類我有對設備類ApplicationField類和ApplicationField appField一個列表中的設備。然而,當我嘗試創建一個SessionFactory,我獲得像一個例外:
org.xml.sax.SAXParseException: Attribute "column" must be declared for element type "one-to-many".
我應該怎麼辦表之間的關係?
非常感謝!
的關係爲:一個ApplicationField有許多設備。一個設備可以僅引用一個ApplicationField。這就像一個國家有幾個城市,但一個城市只在一個國家。 –
Okey。然後在多對一映射中使用unique = true。因此,只有一個設備可以連接到一個ApplicationField。 – nIKUNJ
好!非常感謝!! –