0

我需要帮助来为我的项目中的一组表/类建模。我还需要有关如何为这些表进行休眠映射的帮助。我的项目中有以下表格。

  1. 组织
  2. 接触
  3. 地址

人员表可以有一个或多个地址。组织和联系人只能有一个地址。所以我添加了以下列来建立表之间的关系。

地址表有 PersonId [因为一个人可以有多个地址]。

组织和联系人表有 AddressId [因为这些表只能有一个地址]。

  1. 我想知道我需要为这些表创建哪些 java 类。目前我有 Person、Address、Organization 和 Contact 类。不确定如何将 Address 类链接到 Person、Organization 和 Contact 类。
  2. 我想知道我是否应该将地址视为组件或实体。以及如何创建 xml 映射地址被视为一个组件。
  3. Address 表中的 PersonId 可能具有为组织和联系人创建的地址记录的空值。我可以创建一个单独的表 [say Person_Address] 来存储一个人的地址列表。但是拥有这个链接表可能会提供 Person 和 Address 表之间的多对多关系。在这种情况下,我如何强制执行一对多关系。
4

1 回答 1

1

我会按照您在 3 中的建议进行操作。通过在 Person 类中的地址集上使用 OneToMany 关系,将自动创建中间表,我猜它会对地址 ID 有唯一约束。

编辑:如果您在地址类中添加相应的多对一注释并使用并将一对多注释映射到该字段,则只会在地址表中获得引用。但是,由于您不这样做,因此即使具有一对多关系,您也会得到一个 Person_Address 表,而无需创建任何额外的类。

您应该像在普通 java 中那样对类进行建模。即 Person 将有一组地址,其他的将只有一个,并且 Address 类忽略了其他的。

然后在 Person 类中添加 @OneToMany 注释,在其他类中添加 @OneToOne 类。或者你把它放在你的 orm.xml 中,尽管注释更便于维护。

至于组件/可嵌入与实体,我建议实体,因为它是最简单且没有限制的。不要一下子适应很多概念,坚持主路。

于 2012-04-04T17:16:43.740 回答