1.无连接表的单向多对一
- 单向多对一只需从多的一端访问一的一端即可
- 比如:多个人对应一个地址
- 单向多对一需要在多的一端添加对一的一端的引用,并添加注解@ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="")
- 主要代码及例子
- @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.有链接表的单向多对一- 只需在多的一方添加注解@ManyToOne(cascade=CascadeType.ALL) @JoinTable(name="T_JC_test1_test2",joinColumns=@JoinColumn(name="test1ID"),inverseJoinColumns=@JoinColumn(name="test2ID"))
- 例子如下
<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>
本文详细介绍了在Java持久化框架中实现单向多对一关系的方法,包括无连接表和有链接表两种情况下的具体实现方式。通过示例代码展示了如何使用@ManyToOne和@JoinColumn或@JoinTable注解来定义这种关系。

220

被折叠的 条评论
为什么被折叠?



