【发布时间】:2010-07-09 07:25:46
【问题描述】:
我目前有现有的数据库和休眠映射。有一个中心表和相应的实体 (PersistentObject)。许多其他表和实体通过@ManyToOne 或@OneToOne 映射引用PersistentObject。
现在我想将当前的PersistentObject 抽象化并引入两个子类Sub1Object 和Sub2Object,它们继承自PeristentObject。
我无法更改存储PersistentObject 的表,否则可以添加新表等。该表包含足够的信息,以便我可以使用例如 @DiscriminatorColumn 来分隔 Sub1Object 和 Sub2Object 行(如果需要)。
是否可以进行此更改,以便我当前的 HQL 查询无需修改仍可工作?我有很多查询,例如from PersistentObject where foo = ? 和from OtherEntity other where other.persistentObject = ?。我希望这些查询开始返回具体的子类而不是超类。我不想为Sub1Object 和Sub2Object 编写单独的查询。
这有可能吗?我应该使用什么继承策略?
【问题讨论】:
标签: java hibernate inheritance