我正在使用 Hibernate 和 MySql(两者的旧版本 - Seam 2 项目)。
我无法弄清楚如何设置我的映射表和实体注释,以便我可以“着色”两个实体之间的关系类型(就像我在图上着色边缘一样)。这是我的架构的近似值:
顾客
- ID
- 全名
- 电话号码
店铺
- ID
- 分店名称
- 地址第一行
- 地址第二行
客户商店
- 客户ID
- store_id
- 顾客类型
顾客类型
- 价值(列举:个人、公司、内部)
设计我的 Hibernate 注释和模式以正确映射这些关系的最佳方法是什么?
我看过的方法:
- 我觉得我可以
Set<Store>
在对象上拥有三个属性Customer
,每个属性一个CustomerType
,或者一个Set<Store> getStores(CustomerType)
方法。不过,我不知道如何制作这种映射,而且我很难找到适用于这种特定场景的文档。 - 我可以将我的架构更改为每个
customertype
(customer_store_individual
,customer_store_corporate
等) 都有一个表。这感觉是多余的,但它会解决问题。不过,我更愿意让 hibernate 做一些魔术来整理这个映射并将它们组合到一个表中。 customer_store
我可以为桌子制作一个实体。这感觉就像一个非常糟糕的解决方法。 这个答案已经涵盖了这种类型的关系,虽然我不喜欢这个解决方案。
请注意,我试图混淆我的域,因此请避免对客户提出建议或自行存储对象。让我们假设我的域对象被正确分解,并且它们是真正的多对多关系。它只是区分我遇到问题的每个链接的类型:)