我正在使用Hibernate和MySql(两者的旧版本 - Seam 2项目)。
我无法弄清楚如何设置我的映射表和实体注释,以便我可以“着色”两个实体之间的关系类型(好像我在图上着色边缘)。这是我的架构的近似值:
客户
商品
customer_store
customertype
我看过的方法:
Set<Store>
对象上有三个Customer
属性,每个CustomerType
一个属性,或一个Set<Store> getStores(CustomerType)
方法。我不知道如何制作这个映射,而且我很难找到这个特定场景的文档。customertype
(customer_store_individual
,customer_store_corporate
等方式设置表格。这感觉多余,但它可以解决问题。我宁愿让hibernate做一些魔术来整理这个映射,并将它们组合到一个表中。customer_store
表创建一个实体。这感觉就像一个非常糟糕的解决方案。 This answer already covers this type of relationship,虽然我不喜欢这个解决方案。请注意,我正在尝试对我的域进行模糊处理,因此请避免就客户或存储对象本身提出建议。让我们假设我的域对象被正确分解,并且它们确实是多对多的关系。它只是区分我遇到问题的每个链接的类型:)
答案 0 :(得分:0)
我不知道它是否是最佳解决方案,但我会使用关系的值对象
@Entity
public class Customer
{
// to get all stores
@ElementCollection
public Set<StoreCustomer> stores;
// to get specific stores
public Set<Store> getStores(CustomerType);
}
@Entity
public class Store
{
// to get all customers
@ElementCollection
public Set<StoreCustomer> customers;
// to get specific customers
public Set<Customer> getCustomers(CustomerType);
}
@Embeddable
public class StoreCustomer
{
@ManyToOne
public Customer customer;
@ManyToOne
public Store store;
public CustomerType type;
}