我有两个对象:用户和汽车。
我正在尝试插入一个具有hibernate的car对象,该对象具有用户id的外键依赖性。汽车只有一个用户,所以我分配了一对一的关系。
我的汽车映射看起来像是这样(我删除了<因为xml没有出现):
id name="id" type="int">
<column name="carId" />
<generator class="assigned" />
</id>
<property name="carName" type="string"></property>
<one-to-one name="user" class="User"></one-to-one>
我的用户映射只有id加字段名字等
我的汽车对象看起来像这样:
private int id;
private String carName;
private User user;
我的购物车表有一个用户ID的外键。
当我尝试插入时出现sql错误:字段&#39; userId&#39;没有默认值
hibernate正在做的sql是: Hibernate:插入car(carId,carName)值(?,?)
正如您所看到的,userId缺失并且是必填字段。
我需要根据userId插入一个car对象,将其绑定到用户。我怎么能实现这一点,因为我的映射没有实现这一点。
谢谢!
答案 0 :(得分:1)
首先,汽车与一个用户相关联的事实并不一定使它成为一对一。如果一个人只能拥有一辆汽车,那就是真的。一个人可以有几辆车,这种联想是多对一的。
其次,假设这种关联确实是一对一的,这就是the documentation映射这种关联的方式:
外键上的单向一对一关联几乎相同。唯一的区别是列唯一约束。
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<many-to-one name="address"
column="addressId"
unique="true"
not-null="true"/>
</class>