我正在尝试使用spring,hibernate创建一个电子商务网站,这是DDD之后的第一次。
目前情况就是这样。我正在考虑对象USER作为聚合根,它有一个地址列表(先前的..和当前的),并且每个地址都有一个国家(isocode,name)...
我假设地址和国家是价值对象..严格与用户相关。
在@Entity类用户中有: @ElementCollection @CollectionTable(name =“addresses”,joinColumns = @JoinColumn(name =“address_id”)) @OrderColumn(名称= “USER_ID”) 私人名单地址;
在@Embeddable类地址中,我想为Country创建一个单独的表,我可以在初始化期间填充该表,而Address只有一个外键。
我尝试了@Embeddable Country和地址 @Embedded 私人国家/地区
以及@SecondaryTable ..但这只能在@Entity类中使用..所以问题是Country的字段保存在地址表中。
我应该为国家创建@Entity吗?或者还有另一种方法来映射这些类?
由于
答案 0 :(得分:-1)
我真的没有看到让Country
成为嵌入对象的重点。您将为所有用户一次又一次地重复相同的代码和名称,而不是仅将它们全部指向相同的国家/地区。只需拥有一个包含所有国家/地区的表格,由实体映射,并使所有地址引用与国家/地区有ManyToOne
关联。
顺便说一句,如果你想设计一个你必须输入地址的用户界面,我猜你需要一个显示国家/地区的选择框:你不会输入代码和每次手动的国家名称。因此,您需要Country
实体和findAll
方法来获取所有内容并填充您的选择框。