我在hibernate中执行一对一(一个员工<-> one Mobile)关系,如下所示。这段代码工作正常,但由于这是一对一的关系,因此将相同的手机号码分配给emp1和emp2应该产生了问题(它违反了关系),但代码正在接受并在同一移动设备上添加2个emp(从数据库表中确认)。为什么冬眠一对一的关系就像一个手机< - >很多员工? 我的代码: @Entity冬眠中的一对一关系
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属性'hibernate.hbm2ddl.auto'来生成你的表吗?当hibernate负责创建表时,它会自动添加唯一性约束,否则你必须手动添加它。 –
可能的重复https://stackoverflow.com/questions/8968294/why-onetoone-is-allowing-duplicate-associations –
是的,这与评论链接中的问题类似。道歉重复 –