1

我有一个类 ClassA 映射到 TableA。我也有它的映射,它的实体名称为 EntityA。

现在,我需要在 TableA 的 ClassA 之间创建另一个名为 EntityATwo 的映射,但略有不同。

虽然我可以将 EntityA 的映射复制粘贴到 EntityATwo,但要维护它会非常困难。

因此,我的问题是,我如何为 EntityATwo 创建映射,其中我只声明 EntityATwo 和 EntityA 之间的不同之处,而其余的映射是从 EntityA 派生的。

谢谢,弗兰兹

4

1 回答 1

1

我不知道直接这样做的方法。但如果你允许,我可能会详细说明。


在我们的代码中,我们通常喜欢将一个 java 类映射到一种语义(我们更喜欢使用经过编译检查的类而不是未经检查的字符串)。因此,我们将映射两个类,而不是将两次类映射到具有不同实体名称的表。我们会有 :

  • ClassA 作为通用超类,具有大多数通用的映射。它是用所有这些映射声明的(在 hbm.xml 中)。
  • ClassA1 扩展 ClassA,提供其唯一映射(如果需要,还提供 java 代码,否则可能为空)。它继承了 ClassA 的公共映射。
  • A2 类也

你不再有重复。你会在语义上有所收获。


另一种可能性是在 java 类上使用注释,仅用于公共映射。在 Hibernate 中,注释可以被 xml 映射覆盖(或完成)。所以我想你可以只覆盖 xml 中的相关部分,并且你不会有重复。

于 2009-09-03T10:03:50.007 回答