表格布局:
TABLE ORDER: id localizedInfoId Table OrderLocalizedInfo: id localizedInfoId name
使用以下实体:
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private Long id;
@ManyToMany(
targetEntity=OrderLocalizedInfo.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(
name="OrderLocalizedInfo",
joinColumns=@JoinColumn(name="localizedInfoId"),
inverseJoinColumns=@JoinColumn(name="localizedInfoId"))
private List localizedInfos;
}
public class OrderLocalizedInfo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private Long id;
@Column(name="localizedInfoId")
private Long localizedInfoId;
@Column(name="name")
private String name;
}
我想映射上面的情况,以便在订单对象上使用每个表中的“localizedInfoId”字段列出OrderLocalizedInfo对象。 当我这样做时,我得到一个映射异常'重复列映射集合Order.localizedInfos列:localizedInfoId。
答案 0 :(得分:6)
我并不真正理解你的物理模型,但它显然不代表多对多的关联。 A和B之间的多对多关联涉及一个连接表,其中包含源表和目标表的主键列:
+-------+ +-------+ +-------+ | A | | A_B | | B | +-------+ +-------+ +-------+ | A_ID | | AID | | B_ID | | ... | | BID | | ... | +-------+ +-------+ +-------+
目前,没有任何内容可以与@ManyToMany
进行映射。你需要修复你的物理模型或澄清你想要实现的目标(也许它毕竟不是很多)。
答案 1 :(得分:0)
正如Pascal所说,如图所示,不存在ManyToMany关系。您当前的模型建议OrderLocalizedInfo对象的列表将在Hibernate中更好地表示为OneToMany集合 - http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html