我有两门课:
- 用户
租车
public class User implements Serializable{ private String userName; private Integer userId; private String userParent; } public class RentedCar implements Serializable{ private Date stopDate; private Date startDate; private String carName; private Integer carId; private Integer userId; // Some userId from User. }
这些类有各自的hbm.xml
文件。基础表不相关。这意味着我知道 RentedCar
中的 userId
与 User
中的 userId
关联,但没有 PK/FK 他们之间的关系。我需要在 RentedCar
和 User
之间添加多对一
关联以及一对多
关联在User
和RentedCar
之间。我应该如何在 hbm.xml 文件中执行此操作?
这些是 xml 映射:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User" table="user">
<composite-id>
<key-property name="userName" column="user_name" type="string"/>
<key-property name="userParent" column="user_parent" type="string"/>
</composite-id>
<property name="userId" column="user_id" type="int"></property>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="RentedCar" table="rented_car">
<composite-id>
<key-property name="stopDate" column="stop_date" type="date" />
<key-property name="carId" column="car_id" type="int" />
<key-property name="userId" column="user_id" type="int" />
</composite-id>
<property name="startDate" column="start_date" type="date"></property>
<property name="carName" column="car_name" type="float"></property>
</class>
</hibernate-mapping>
最佳答案
我认为您的类中应该有一些内容表明存在一对多关系,以便在 hbm.xml 文件中执行此操作:
public class User implements Serializable{
private String userName;
private Integer userId;
private String userParent;
private Set<RentedCar> rentedCars;
}
public class RentedCar implements Serializable{
private Date stopDate;
private Date startDate;
private String carName;
private Integer carId;
private User user;
}
然后在 RentedCar.hbm.xml 中您可以在里面使用:
<many-to-one name="user" class="User">
<column name="userId" not-null="true"></column>
</many-to-one>
在 User.hbm.xml 中:
<set name="rentedCars" table="rented_car" fetch="select">
<key>
<column name="userId" not-null="true"></column>
</key>
<one-to-many class=" RentedCar "/>
</set>
本教程可能对您有帮助 http://www.tutorialspoint.com/hibernate/hibernate_one_to_many_mapping.htm
关于java - Hibernate - 在 xml 中不相关对象上映射关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381810/