0

我需要构建一个 Vehicle 域对象。所有 Vehicle 对象将具有大约 5 个属性……没什么大不了的。我用@Entity 对类进行注释,在一个用@Id 注释的id 中拍打。我的问题是,我需要考虑另外两种类型的特种车辆。一个需要保存 2 个额外的字符串值,另一个需要保存一个字符串列表。

我希望能够执行 findAll() 并获得所有车辆,因此我并不真正愿意为其他两种类型的车辆创建完全独立的域对象并为它们提供完全独立的表。我玩弄了一个想法来创建一个“AdditionalProperties”抽象类,使其成为 Vehicle 的成员,然后为我的两辆专业车辆扩展它,但我很快就迷失了如何正确地对其进行注释并将其映射到数据库。但即便如此,我也会坚持编写大量单一的 if 语句来检查车辆类型并转换该类等

我的另一个想法是在我现在拥有的单个 Vehicle 域对象中包含额外的字段(即使它们对所有其他类型的车辆没有任何意义)并将值保留为空,除非它是其中之一特种车辆。

有人对我应该如何处理这个问题有任何想法吗?可能有一些关于如何注释类的例子?

4

1 回答 1

3

为什么不简单地创建 Vehicle 的两个子类并包含附加属性?Hibernate 很好地支持继承。您将有三个选项来持久化实体继承树:

  • 一个表中的所有内容(通常是最快和最简单的选项)
  • 每个实体都在自己的表中
  • 公共表中的公共属性,以及它们自己的表中的附加子实体属性。

无论您选择哪种解决方案,选择车辆都会选择满足标准的所有类型的车辆。Hibernate 查询是多态的。

阅读文档

于 2012-11-01T12:19:42.960 回答