Это поможет увидеть DDL для каждой таблицы.Вы используете сопоставления «многие к одному» для связи «один к одному» при использовании уникальной связи по внешнему ключу.Если бы они использовали один и тот же первичный ключ, вы могли бы использовать один к одному.
Вы могли бы попытаться сделать двустороннее сопоставление с одним к одному в вашем отображении транспортного средства, но это не должно быть необходимым.Вот как это выглядело бы.
<one-to-one name="risk" class="uk.co.test.Risk" property-ref="riskID"/>
Однако то, что вы пытаетесь сделать, в значительной степени соответствует действительности.Я мог бы просто немного изменить определения классов и перепроверить ваш DDL.
Например (Сохранение отображений hbm в точности так, как они были определены выше):
Структура таблицы выглядит следующим образом:
create table GV_VEHICLE (
vehicleID int(11) not null auto_increment,
regNumber varchar(50) not null,
abiCode varchar(50) not null,
make varchar(50) not null,
model varchar(50) not null,
primary key(vehicleID)));
create table GV_RISK (
riskID int(11) not null auto_increment,
vehicleID int(11),
primary key(riskID),
foreign key(vehicleID) references GV_VEHICLE(vehicleID));
Создайте определения классов один к одному,каждый с защитой друг от друга
public class Vehicle {
private long vehicleID;
private String regNumber;
private String abiCode;
private String make;
private String model;
private Risk risk;
}
public class Risk {
private long riskID;
private Vehicle vehicle;
}