我有3个班级:
Person {
int id;
String name;
String lastName;
}
Employee extends Person {
//some additional data
}
Owner extends Person {
//some additional data
}
对于每个班级,我都有单独的表格。在Employee
表中,密钥应与Person
表中的密钥完全相同。
现在,当我插入Employee
类时,Person
表中应该有一条记录,Employee
中有一条记录与ID
相同(假设这是值1)
之后我想插入Owner类,我希望它是同一个Person(ID = 1)所以在插入Owner之后它应该只在表Owner中添加一条记录,但是记录在表中Person应该保留为它是
我试过这个:http://viralpatel.net/blogs/hibernate-inheritance-table-per-subclass-annotation-xml-mapping/
插入第一个类是正常的,插入第二个不同的ID是好的,从db获取对象是好的,但是我想添加具有相同ID的Owner类,例如我得到的hibernateException的现有人...可以任何人帮助我吗?
答案 0 :(得分:0)
这显然是不可能的。由于Java只具有单一继承,因此对象不能同时是员工和所有者。您不应该使用继承来映射这些关联。
相反,您应该让Person与其Employee角色具有OnetoOne关联,并且与其所有者角色具有OnetoOne关联。
答案 1 :(得分:0)
“这根本不可能。”在我的代码示例中,Employee扩展了Profile和Owner exstends Profile。
如果我强烈反对你,你会建议你这样做:
Person{
Employee emp;
Owner owner;
}
在我的第一堂课中,我能够做到:
Person getPersonFromDb( Class class, int id){ ... session.get(class, id) ... }
Owner o = (Owner) getPersonFromDb(Owner.class, id);
Employee e =(Employee) getPersonFromDb(Employee.class, id);
在你的方法中我不能有这样的东西......