hibernate 多对多 利用联合主键 映射一个复杂中间表的双向多对多关联

要利用复杂中间表实现双向关联要利用复杂中间表的两个对象ID作为联合主键这样的配置可以级联操作吗?视乎是不可以的,我的本意不是要多对多,而是要跟关心中间表的信息,我是想把中... 要利用复杂中间表实现双向关联
要利用复杂中间表的两个对象ID作为联合主键
这样的配置可以级联操作吗?视乎是不可以的,我的本意不是要多对多,而是要跟关心中间表的信息,我是想把中间表来级联STUDENT和EXAM表
展开
 我来答
cjxgotofly
2011-02-28 · TA获得超过271个赞
知道小有建树答主
回答量:266
采纳率:0%
帮助的人:293万
展开全部
举个例子:
多对多双向关联
关系举例:老师<-->学生,老师需要知道自己教了哪些学生,学生也知道自己有哪些老师.
数据库:中间表
Annotation:@ManyToMany
XML:<many-to-many>
多对多单向配置只需要在一端进行配置就可以了,双向需要配置两端.
关系模型(Teache多对多Student)
Teacher(id,name,students)多
Set<Student> students=new HashSet<Student>()

Student(id,name,teachers)多
Set<Teacher> teachers = new HashSet<Teacher>();

Annotation配置
在Teacher这一端的students上配置
//如果手动指定生成的中间表的表名和字段名
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)
在Student一端的teachers只需要配置
@ManyToMany(mappedBy="students")

XML配置方式:两端配置一样,注意表名和生成的中间表的字段属性名要一致
Teacher那一端配置
<set name="students" table="t_s">
<key column="teacher_id"/>
<many-to-many class="com.xxx.Student" column="student_id"/>
</set>
在Student那一端配置
<set name="teachers" table="t_s">
<key column="student_id"></key>
<many-to-many class="com.xxx.Teacher" column="teacher_id"/>
</set>
生成的表为
create table Student (
id integer not null auto_increment,
name varchar(255),
primary key (id)
)
create table Teacher (
id integer not null auto_increment,
name varchar(255),
primary key (id)
)
create table t_s (//生成的中间表
teacher_id integer not null,
student_id integer not null,
primary key (teacher_id, student_id)
)
t_s表的两个属性分别references其它表的主键.
t_s(teacher_id, student_id)为中间表,ID策略为联合主键
追问
这样的配置可以级联操作吗?视乎是不可以的,我的本意不是要多对多,而是要跟关心中间表的信息,我是想把中间表来级联STUDENT和EXAM表
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式