java - 使用外键关联的一对一映射 hibernate

标签 java mysql entity-framework hibernate

我是 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/

相关文章:

java - Antlr - 为什么它期望 FunctionCall 但 PrintCommand 给出

mysql - SQL 代码中的错误 1064

mysql - 按评论最高排序

mysql - Magento错误: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'DATABASENAMEHERE.mage_index_process' doesn't exist

sql - Entity Framework 4 Code First 出现数据库使用错误

java - Java 中的字符串行为

java - 使用对象类型将数组列表存储在共享首选项中

c# - 使用交易范围和查询

c# - 保存枚举时值不正确

java - 适用于桌面应用程序的最佳开源轻量级 "Packagable"DB