Составной ключ, если составной класс содержит ссылки на типы классов в поле
У меня есть один класс водителя:
public class Driver {
private String driverId;
private String driverName;
//getter and setter
}
и один класс DriverEntry, который используется для хранения ежедневных сведений о вождении водителя, а класс DriverEntry имеет DriverEntryKey, который содержит в качестве объекта Driver и объекта Date. Итак, как я могу сопоставить с этими файлами в файле driver.hbm.xml?
public class DriverEntry {
private DriverEntryKey key;
private String startTime;
private String endTime;
//getter and setter
}
public class DriverEntryKey implements Serializable{
private Driver driver;
private Date date;
}
<class name="Driver" table="driver" >
<id name="driverId" column="driver_id">
<generator class="assigned"/>
</id>
<property name="driverName" column="prod_name" length="20"/>
</class>
<class name="DriverEntry" table="DriverEntry" >
<composite-id name="key" class="DriverEntryKey">
<key-property name="driver" type=""></key-property>
<key-property name="date" type=""></key-property>
</composite-id>
</class>
Итак, что я могу заполнить внутри, который поддерживает драйвер --- таблица первичного ключа к внешнему ключу - в -> DataEntry???
2 ответа
Решение
Это то, что вы пытаетесь достичь
<class name="DriverEntry">
<composite-id name="id" class="DriverEntryKey">
<key-property name="driverId"/>
<key-property name="date" type="date"/>
</composite-id>
<property name="name"/>
<many-to-one name="driver" class="Driver">
<column name="driverId"/>
// all other columns
</many-to-one>
....
</class>
Вам придется немного подправить ответ в соответствии с вашими требованиями.
<class name="DriverEntry" >
<composite-id name="key" class="DriverEntryKey">
<key-many-to-one name="driver" class="Driver" column="driver_id"/>
<key-property name="drivingDate" type="java.util.Date"></key-property>
</composite-id>
<property name="startTime" column="start_time" />
<property name="endTime" column="end_time" />
</class>