我是 Hibernate 学习实体映射的新手,使用 hibernate 框架而不是注释,我使用 XML 映射实体
这里我有两个类 Employee 和 Address [Address 是目标类,Employee 是源类,即 Employee 表将具有引用 Address 表主键的外键列]
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 我没有向员工表添加外键约束
我的问题是在尝试保存员工实体 addr_id 值时未存储在员工表中如何解决此问题。在 web 中,大多数事情都使用注释或共享主键。如何解决此问题请帮助我
最佳答案
改变你的映射。您需要完全限定类名并指示连接列,即Employee的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"/>
关于java - 使用外键关联的一对一映射 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45300787/