【发布时间】:2017-07-18 08:05:01
【问题描述】:
我在休眠中实现一对一(一个员工一个移动)关系如下。此代码工作正常,但由于这是一对一的关系,将相同的手机号码分配给 emp1 和 emp2 应该会产生问题(它违反了关系),但代码正在接受并添加 2 个具有相同手机的 emp(从数据库表确认)。为什么hibernates一对一的关系就像一部手机许多员工? 我的代码: @实体
public class Employee {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@OneToOne
private Mobile mobile;
//...rest of the code
}
@Entity
public class Mobile {
@Id @GeneratedValue
private int id;
private long number;
//...rest of the code
}
Test Client main(...){
Mobile mobile = new Mobile(9999999999L);
Employee emp1 = new Employee("Raja");
Employee emp2 = new Employee("Raja");
emp1.setMobile(mobile);
emp2.setMobile(mobile);// VIOLATING 1-1 RELATIONSHIP
//...REST OF THE COMMON CODE
session.save(mobile);
session.save(emp1);
session.save(emp2);
session.getTransaction().commit();
}
数据库显示两个 EMP 记录具有相同的手机号码(违反 1-1)
【问题讨论】:
-
您是否使用休眠属性
hibernate.hbm2ddl.auto来生成您的表格?当 hibernate 负责创建表时,它会自动添加唯一性约束,否则您必须手动添加它。 -
是的,这类似于评论链接中的问题。重复道歉
标签: java hibernate relationship one-to-one