假设我有两个表:人和车辆
人员记录可以独立存在,这意味着一个人可能与车辆关联,也可能不关联。但车辆记录不能脱离人而存在。 简而言之,
Vehicle 表的 Person_Id 有外键,其中 Person_Id 是 person 表的主键。
现在为了在 hibernate 中定义这种关系,我使用了一对一映射,如下所示:
public class Person
{
private int person_id;
@OnetoOne(mappedBy = "person", cascade = CascadeType.ALL)
private Vehicle vehicle;
}
public class Vehicle {
private int vehicle_id;
@OnetoOne(fetch = FetchType.LAZY)
@JoinColumn(name = "person_id")
private Person person;
}
现在,当我尝试保存拥有车辆的人员时,人员对象已成功保存。我只使用 session.save(person)
并且两个对象都成功保存。
另一方面,如果我尝试保存一个没有 Vehicle 的 Person,即该 Person 对象的 vechile 对象为 null。然后抛出异常,即
ConstraintVoilationException cannot insert null into the Vehicle.Person_Id column.
请帮助我理解,当我的车辆对象为空时,如何保存人员对象。
这似乎是 1 到 1/0 映射。
最佳答案
关于java - 如何在 hibernate 中使用一对一/零映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51541022/