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

本文详细介绍了在Java持久化框架中实现单向多对一关系的方法,包括无连接表和有链接表两种情况下的具体实现方式。通过示例代码展示了如何使用@ManyToOne和@JoinColumn或@JoinTable注解来定义这种关系。

1.无连接表的单向多对一

  1. 单向多对一只需从多的一端访问一的一端即可
  2. 比如:多个人对应一个地址
  3. 单向多对一需要在多的一端添加对一的一端的引用,并添加注解@ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="")
  4. 主要代码及例子
  • @ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="")
<span style="font-family:Microsoft YaHei;font-size:14px;">//表一,学生表
@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 Test2 address;<span style="white-space:pre">	</span>//地址(引用表二)

	@ManyToOne(cascade={CascadeType.ALL})<span style="white-space:pre">	</span>//</span><span style="font-family:Microsoft YaHei;font-size:14px;">cascade={CascadeType.ALL}级联保存相关的表</span><span style="font-family:Microsoft YaHei;font-size:14px;">
	@JoinColumn(name="test1ID")
	public Test2 getAddress() {
		return address;
	}
	public void setAddress(Test2 address) {
		this.address = address;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


//表二,地址表
@Entity
@Table(name = "T_JC_test2")
@Where(clause="recordStatus='"+GlobalConstant.FLAG_Y+"'")
public class Test2 extends BusinessEntity{
	private static final long serialVersionUID = -7653945367481001205L;
	private String addressDetatil;<span style="white-space:pre">	</span>//详细地址
	public String getAddressDetatil() {
		return addressDetatil;
	}
	public void setAddressDetatil(String addressDetatil) {
		this.addressDetatil = addressDetatil;
	}	
}</span>
2.有链接表的单向多对一
  1. 只需在多的一方添加注解@ManyToOne(cascade=CascadeType.ALL) @JoinTable(name="T_JC_test1_test2",joinColumns=@JoinColumn(name="test1ID"),inverseJoinColumns=@JoinColumn(name="test2ID"))
  2. 例子如下
<span style="font-family:Microsoft YaHei;">//表一,学生表
@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 Test2 address;<span style="white-space:pre">	</span>//地址(引用地址表)

	@ManyToOne(cascade={CascadeType.ALL})
	@JoinTable(name="T_JC_test1_test2",joinColumns=@JoinColumn(name="test1ID"),inverseJoinColumns=@JoinColumn(name="test2ID"))
	public Test2 getAddress() {
		return address;
	}
	public void setAddress(Test2 address) {
		this.address = address;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

//表二,地址表
@Entity
@Table(name = "T_JC_test2")
@Where(clause="recordStatus='"+GlobalConstant.FLAG_Y+"'")
public class Test2 extends BusinessEntity{
	private static final long serialVersionUID = -7653945367481001205L;
	private String addressDetatil;<span style="white-space:pre">		</span>//地址详细信息
	public String getAddressDetatil() {
		return addressDetatil;
	}
	public void setAddressDetatil(String addressDetatil) {
		this.addressDetatil = addressDetatil;
	}	
}</span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值