使用hibernate注释映射ManyToMany关系?
问题描述:
表布局:使用hibernate注释映射ManyToMany关系?
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",
[email protected](name="localizedInfoId"),
[email protected](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;
}
我要地图上面的情况,使我有订单对象上OrderLocalizedInfo对象的列表,使用“localizedInfoId”每个表中的字段。 当我这样做时,我得到一个映射异常'为集合Order.localizedInfos列重复列映射:localizedInfoId。
答
我不太了解你的物理模型,但它显然不代表多对多的关联。一个多A和B之间的一对多关联涉及连接包含列的源和目标表的主键表:
+-------+ +-------+ +-------+ | A | | A_B | | B | +-------+ +-------+ +-------+ | A_ID | | AID | | B_ID | | ... | | BID | | ... | +-------+ +-------+ +-------+
所以目前,没有什么地图@ManyToMany
。你需要修正你的物理模型或者澄清你想要达到的目标(可能这毕竟不是很多)。
答
正如帕斯卡尔所说,没有如图所示的ManyToMany关系。您当前的模型建议ListLoadedLocalizedInfo对象将在休眠中更好地表示为OneToMany集合 - http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html
您是对的,它并不是很多。我需要做一个@OneToMany – jzilla 2010-07-12 15:29:06
@Pascal我在连接表中还有一列。我可以如何映射到Java POJO? – vikiiii 2013-03-15 05:07:56