晚上好人。
我正在开发一个使用Hibernate 4.x的应用程序。我在类中使用复合id时遇到问题,并将另一个类的关系映射到此类。
我有一个ParadaBus对象,代表一个巴士站(西班牙语),每个对象都由一个整数和一个字符串标识:
public class ParadaBus implements Serializable {
private Integer id;
private String concesionRecogida;
......
@Override
public int hashCode() {
return this.id.hashCode() + this.concesionRecogida.hashCode();
}
@Override
public String toString() {
return "ParadaBus [" + id + " " + concesionRecogida + "]";
}
}
另一方面,我有另一个类,它包含一个ParadaBus对象的单个实例:
public class TrabajadorNombramiento implements Serializable {
...
private ParadaBus suParada;
...
}
我想用XML HBM文件映射这个关系,我想我做错了
这是ParadaBus的.hbm.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"Hibernate Mapping 3.0"
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.ingartek.cavwebapp.model.ParadaBus" table="ParadasBus">
<composite-id >
<key-property name="id" type="integer">
<column name="id" />
</key-property>
<key-property name="concesionRecogida" type="string">
<column name="concesion_recogida" />
</key-property>
</composite-id>
...
</class>
</hibernate-mapping>
在这里,一切似乎都是正确的。以下代码段表示另一个类的hbm.xml,其中应映射与ParadaBus的关系:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"Hibernate Mapping 3.0"
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.ingartek.cavwebapp.model.TrabajadorNombramiento" table="nombramientos">
...
<many-to-one name="suParada" class="com.ingartek.cavwebapp.model.ParadaBus" cascade="none">
<column name="id_parada" />
<column name="concesion_recogida" />
</many-to-one>
...
</class>
</hibernate-mapping>
我做错了吗?
感谢您的帮助。
编辑:
最终,我决定使用UUID来识别每个ParadaBus对象/行。
答案 0 :(得分:1)
关系中的列名与类映射中的列名相同。
尝试: .hbm.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"Hibernate Mapping 3.0"
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.ingartek.cavwebapp.model.ParadaBus" table="ParadasBus">
<composite-id >
<key-property name="id" type="integer">
<column name="id_parada" />
</key-property>
<key-property name="concesionRecogida" type="string">
<column name="concesion_recogida" />
</key-property>
</composite-id>
...
</class>
</hibernate-mapping>
另一个类的hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"Hibernate Mapping 3.0"
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.ingartek.cavwebapp.model.TrabajadorNombramiento" table="nombramientos">
...
<many-to-one name="suParada" class="com.ingartek.cavwebapp.model.ParadaBus" cascade="none">
<column name="id_parada" />
<column name="concesion_recogida" />
</many-to-one>
...
</class>
</hibernate-mapping>