HIbernate关系映射--单向一对多@OneToMany

1.单向的一对多(1-N),和集合@ElementCollection有点类似,不同的是,单向一对多,集合里的元素是关联的实体

2.对于单向的一对多关联关系,只需在1的一方添加一个集合类型(List,Set,Map)的成员变量,然后给它提供getter,setter方法

3.使用时机一个表引用另一个表,但只是但向引用,而且建议使用有链接表的单向一对多(1-N)

4.主要注解代码:

<span style="font-family:Microsoft YaHei;">@OneToMany(cascade={CascadeType.ALL})<span style="white-space:pre">		</span>//cascade级联保存,</span><span style="font-family: 'Microsoft YaHei';">CascadeType.ALL级联保存相关的表</span><span style="font-family:Microsoft YaHei;">
@JoinTable(name="T_JC_test1_test2",joinColumns=@JoinColumn(name="test1ID"),inverseJoinColumns=@JoinColumn(name="test2ID")) //name是连接表的名字,joinColumns里面的name是外键列,外键是1的一方,表里面的(id)主键,inverseJoinColumns里面的name是外键列,是N的一方,表里面的(id)主键。即@JoinTable(如:T_JC_test1_test2)是张中间表,它将表一(test1)和表二(test2)连接起来</span><pre name="code" class="java">

 5.例子: 

<span style="font-family:Microsoft YaHei;">//表一(表一里面的report引用表二)
@Entity
@Table(name = "T_JC_test1")
@Where(clause="recordStatus='"+GlobalConstant.FLAG_Y+"'")
public class Test1 extends BusinessEntity{
	private static final long serialVersionUID = 2535128385272676564L;
	private String name;<span style="white-space:pre">		</span>//姓名
	private List<Test2> report = new ArrayList<Test2>();<span style="white-space:pre">	</span>//成绩单
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@OneToMany(cascade={CascadeType.ALL})
	@JoinTable(name="T_JC_test1_test2",joinColumns=@JoinColumn(name="test1ID"),inverseJoinColumns=@JoinColumn(name="test2ID"))
	public List<Test2> getReport() {
		return report;
	}
	public void setReport(List<Test2> report) {
		this.report = report;
	}

//表二
@Entity
@Table(name = "T_JC_test2")
@Where(clause="recordStatus='"+GlobalConstant.FLAG_Y+"'")
public class Test2 extends BusinessEntity{
	private static final long serialVersionUID = -7653945367481001205L;
	private int chinese;<span style="white-space:pre">	</span>//语文成绩
	private int math;<span style="white-space:pre">	</span>//数学成绩
	public int getChinese() {
		return chinese;
	}
	public void setChinese(int chinese) {
		this.chinese = chinese;
	}
	public int getMath() {
		return math;
	}
	public void setMath(int math) {
		this.math = math;
	}</span>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值