1

来自Eric Evans 的 DDD 书

VALUE OBJECTS 甚至可以引用 ENTITIES。例如,如果我向在线地图服务询问从旧金山到洛杉矶的风景优美的驾车路线,它可能会派生一个通过太平洋海岸公路连接洛杉矶和旧金山的 Route 对象。该 Route 对象将是一个 VALUE,即使它引用的三个对象(两个城市和一条高速公路)都是 ENTITIES。

第 98 页

在 Hibernate 中,如果我有一个值对象,我可以将它映射为一个组件。如果我想从该组件中引用实体怎么办?

例子:

  • 我有一个用户表。
  • 每个用户可以有多个地址。
  • 我创建了一个地址表,但我将地址视为域中的值对象。
  • 每个地址都有一个类型(工作地址、家庭地址等)
  • 我创建了一个地址类型表作为查找并将其视为我域中的一个实体。
  • 地址应该具有对其类型的引用。

我怎样才能做到这一点?

4

1 回答 1

1

请参阅文档

<component>元素将子对象的属性映射到父类表的列。反过来,组件可以声明它们自己的属性、组件或集合。请参阅下面的“组件”。

<component>                 <!-- NOTE: I'm omitting the attributes. See docs for details on these. -->
       <property ...../>
       <many-to-one .... />
       ........
</component>

请注意上面的示例propertymany-to-one代码。要创建对另一个实体的引用,您只需many-to-one在组件内部使用,就像在组件外部使用一样。

于 2013-11-11T14:30:34.707 回答