【发布时间】:2009-10-13 04:24:14
【问题描述】:
我正在处理的系统有一个名为 Order 的域对象,它继承自 AbstractPersistentObject。现在我需要添加另一个名为 ExternalOrder 的域对象,它具有 Order 的一些属性,但不是全部。我希望在某些地方对这两个对象进行多态处理。因此,我正在考虑实现继承映射。
我创建了一个AbstractOrder,它现在扩展了AbstractPersistentObject 并将通用属性移到了AbstractOrder。 Order 和 ExternalOrder 现在扩展了 AbstractOrder。
由于 Order 表在数据库中已经有大量数据,我不希望对架构进行太多更改。
如果我省略 InheritanceType.SINGLE_TABLE,哪种继承策略更适合我?我应该提到我必须使用 OnetoMany 加入至少一个域对象。域对象将引用 AbstractOrder,Hibernate 将在运行时决定此 AbstractOrder 的具体子类。
AbstractPersistentObject 具有属性 ID 的 @Id 和 @GeneratedValue(strategy=GenerationType.IDENTITY)。当我实现继承时,有没有办法覆盖它?据我了解, GenerationType.IDENTITY 不适用于某些继承选择,我不确定如何覆盖它。我已经查看了 @AttributeOverride,但我认为它仅在您想要覆盖某些 @Column 值时才有用。
【问题讨论】:
标签: java hibernate persistence annotations