2

我有 3 节课:

Person {
    int id;
    String name;
    String lastName;
}

Employee extends Person {
    //some additional data
}

Owner extends Person {
    //some additional data
}

对于每个班级,我都有单独的表格。表中的键应与Employee表中的键完全相同Person

现在,当我插入类时,表中Employee应该有一条记录,一条记录相同(假设这是值 1)。PersonEmployeeID

之后我想插入 Owner 类并且我希望它是同一个 Person (ID=1) 所以在插入 Owner 之后应该在表 Owner 中只添加一条记录,但表 Person 中的记录应该保持原样。

我试过这个:http: //viralpatel.net/blogs/hibernate-inheritance-table-per-subclass-annotation-xml-mapping/

插入第一个类是可以的,插入具有不同 ID 的第二个是可以的,从 db 获取对象是可以的,但是我想添加具有相同 ID 的 Owner 类,例如我得到 hibernateException 的现有人......有人可以帮我吗?

4

2 回答 2

0

“这根本不可能。” 在我的代码示例中,员工扩展个人资料,所有者扩展个人资料。

如果我完全理解你的回答,你会建议这样的事情:

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);

在你的方法中,我不能有这样的东西......

于 2012-12-06T21:14:27.733 回答
0

这根本不可能。由于Java只有单一继承,一个对象不能既是雇员又是所有者。您不应该使用继承来映射这些关联。

相反,您应该让 Person 具有与其 Employee 角色的 OnetoOne 关联,以及与其 Owner 角色的 OnetoOne 关联。

于 2012-12-06T20:51:23.863 回答