Hibernate 多对多 中间表含有其他字段 注解方式实现

本文介绍了在Hibernate中处理多对多关系时,如何在中间表添加额外字段的情况。通过将传统的ManyToMany注解分解为两个OneToMany注解来实现,详细讲述了配置过程,并分享了解决删除操作不成功的问题,引用了相关博客和wiki资料作为参考。
摘要由CSDN通过智能技术生成

需求:

两个实体类:Teacher.class Student.class 中间表包含了一个额外字段:score


Teacher.calss

id name
1 Mr.zhang
2 Mr.wang

Student.class

id name
1 Xiaoming
2 Xiaohong

中间表

id teacher_id student_id score
1 1 1 89
2 1 2 90

解决办法:

按照传统的多对多注解实现,中间表是以自身id为默认主键,另外包含了两个实体类的id,共3个字段,不能添加额外的字段。

解决办法是将ManyToMany 分解成两个OneToMany。


解决过程:

显示看到了这个blog:http://blog.csdn.net/liuxianbing119/article/details/7283769 知道这么处理,但是可以添加成功,删除一直不成功。

后来翻到了wiki里面的介绍:http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany

知道这种方法肯定没错,就又试了几次,终于成功了。


代码:

1. AbstractEntity.java

package com.cc.persistence;

import java.io.Serializable;

public abstract class AbstractEntity implements Persistable {
	public abstract Serializable getInternalId();
	
	@Override
	public boolean equals(Object o) {
		if (o == null) return false;
		if (!o.getClass().getName().equals(this.getClass().getName())) return false;
		return ((Persistable)o).getInternalId().equals(this.getInternalId());
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值