使用外键关联进行一对一映射hibernate

时间:2017-07-25 10:35:35

标签: java mysql entity-framework hibernate

是使用hibernate框架的Hibernate学习实体映射的新手,而不是使用XML来映射实体的注释

这里我有两个类Employee和Address [Address是目标类,Employee是源类,即Employee表将外键列引用地址表主键]

class Employee{
String name;
int id;
Address addr;
//getter and setter methods
}

class Address{
String state;
String city
}

mapping.hbm.xml文件: -

<hibernate-mapping>
<class name="Employee" table="emp">
<id name="id" column="id">
<generator class="assigned"/>
</id>
<property name="name" column="emp_name"/>
<one-to-one name="addr" class="Address" foreign-key="addr_id" cascade="all"/>
</class>

<!--mapping for Address Entity-->
<class name="Address" table="address>
<property name="city"/>
<property name"state"/>
</class>
</hibernate-mapping>

注意: - 我在表级使用MySQL我没有向employee表添加外键约束

而我的问题在我尝试保存员工实体时,addr_id值没有存储在员工表中如何解决这个问题.Web的大部分内容都是使用注释或共享主键。如何解决这个问题请帮助我

1 个答案:

答案 0 :(得分:0)

更改您的地图。您需要完全限定类名并指示加入列,即员工的PK,列id

员工

<class name="Employee" table="emp">
<id name="id" column="id">
<generator class="assigned"/>

地址实体必须引用员工的PK,在您的情况下为id

 <one-to-one name="addr" class="my.package.Employee"
                   unique="true" not-null="true" cascade="all"/>