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>