是myeclipse给你自动生成的,
myeclipse认为,你写的是两张表,符合1对N的规范,所以优先选择1对N,
如果,你创建三张表,两个实体,一个关系表,这个时候,就会给你生成N对N的关系了:比如
CREATE TABLE events
(
event_id bigint NOT NULL,
event_date date,
title character varying(128),
CONSTRAINT events_pkey PRIMARY KEY (event_id)
)
CREATE TABLE person
(
person_id bigint NOT NULL,
age bigint,
firstname character varying(128),
lsatname character varying(128),
CONSTRAINT person_pkey PRIMARY KEY (person_id)
)
CREATE TABLE person_event
(
event_id bigint NOT NULL,
person_id bigint NOT NULL,
)
不好意思,我的错,需要加上外键关系,在对myeclipse中进行反转表时,要选择一个实体,来进行反转,不要选择关系表,点击完成前,一定要先点击A==>B,B==>A这个,让myeclipse给你生成。我试了,通过
你试一下,肯定可以
首先你要明白,所谓的多对多是指N:1 和1:N ,也就是两个多对一。形成了多对多关系,准确的说hibernate是不认识多对多的,它只认识一对多,建表时 中间表的两个ID字段都是主键且都是外键(这个一定要设定清楚双主键双外键),当一个为主键时另一个为外键,另一个为主键时则反之,这两个字段是两个多对多表的外键,同时是自身的主键,你用的如果是MYSOL创建的时候可能问题不是很明显,如果用的ORACLE估计关系表双主键,双外键的关系你没有体现出来,
检查下建表的sql语句
多对多我从来都是自己手写的,很难吗?