【发布时间】:2010-03-11 05:55:59
【问题描述】:
我几乎看不到任何与 Hibernate 相关的以下问题的指针。这与使用具有父子的单个数据库表实现继承有关 与自身的关系。例如:
CREATE TABLE Employee (
empId BIGINT NOT NULL AUTO_INCREMENT,
empName VARCHAR(100) NOT NULL,
managerId BIGINT,
CONSTRAINT pk_employee PRIMARY KEY (empId)
)
这里,managerId 列可能为空,也可能指向Employee 表的另一行。业务规则要求员工了解他的所有报告人,并让他了解他/她的经理。业务规则还允许行具有 null managerId(组织的 CEO 没有经理)。
我们如何在 Hibernate 中映射这种关系,标准的多对一关系在这里不起作用?特别是,如果我不仅想将我的实体实现为相应的“员工”实体类,还想实现多个类,例如“经理”、“助理经理”、“工程师”等,每个类都继承自“员工”超级实体类, 某些实体的属性实际上并不适用于所有人,例如“经理”获得 Perks,而其他实体则没有(相应的表格列当然会接受 null)。
示例代码将不胜感激(我打算使用 Hibernate 3 注释)。
【问题讨论】:
-
@hobodave:我希望有一个使用注释的代码示例(在 Hibernate 3 上),这就是目的。你同意吗?
标签: java hibernate orm single-table-inheritance