0

我正在尝试使用 spring、hibernate 和第一次遵循 DDD 创建一个电子商务网站。

目前的情况是这样的。我正在考虑将对象 USER 作为聚合根,它有一个地址列表(以前的..和当前的),并且每个地址都关联一个国家(isocode,名称)..

我假设 Address 和 Country 是 Value Objects.. 与用户严格相关。

在@Entity 类 User 中有: @ElementCollection @CollectionTable(name = "addresses", joinColumns = @JoinColumn(name = "address_id")) @OrderColumn(name="user_id") 私有列表地址;

在 @Embeddable 类 Address 我想为 Country 创建一个单独的表,我可以在初始化期间填充该表,并且 Address 只有一个外键。

我试过@Embeddable Country 和地址@Embedded private Country country

还有@SecondaryTable .. 但这只能在@Entity 类中使​​用。所以问题是Country 的字段保存在地址表中。

我应该为 Country 创建一个 @Entity 吗?或者还有另一种方法来映射这些类?

谢谢

4

1 回答 1

0

我真的不明白制作Country嵌入式对象的意义。您将一次又一次地为所有用户重复相同的代码和名称,而不是让他们都指向同一个国家。只需有一个包含所有国家的表,由一个实体映射,并让所有地址都ManyToOne与 Country 关联。

顺便说一句,如果你想设计一个必须输入地址的 UI,我想你需要一个选择框来显示所有可供选择的国家:你不会每次都手动输入国家的代码和名称. 所以你需要一个Country实体和一个findAll方法来获取它们并填充你的选择框。

于 2012-01-07T17:28:45.000 回答