如果持久化类具有包含实体引用的列表(List)对象,则需要使用一对多关联来映射列表元素。
在这里,我们使用论坛应用场景,在论坛中一个问题有多个答案。
在这种情况下,一个问题可以有多个答案,每个答案可能有自己的信息,这就是为什么在持久化类中使用列表(包含Answer
类的引用)来表示一系列答案。
下面来看看看持久化类有列表对象(包含Answer
类对象)。
package com.yiibai;
import java.util.List;
public class Question {
private int id;
private String qname;
private List<Answer> answers;
//getters and setters
}
Question
类有自己的信息,如id
,answername
,postedBy
等
package com.yiibai;
public class Answer {
private int id;
private String answername;
private String postedBy;
//getters and setters
}
}
Java
Question
类具有包含实体引用的列表对象(即Answer
类对象)。在这个示例中,需要使用一对多列表来映射此对象。 下面来看看如何映射它。
<list name="answers" cascade="all">
<key column="qid"></key>
<index column="type"></index>
<one-to-many class="com.yiibai.Answer"/>
</list>
XML
List中的一对多个映射的完整示例
在这个例子中,我们将看到包含实体引用的映射列表的完整示例。创建一个项目:listonetomany
,其完整的项目结构如下图所示 -
1)创建持久类
这个持久化类定义了类的属性,包括List
。
Question.java
package com.yiibai;
import java.util.List;
public class Question {
private int id;
private String qname;
private List<Answer> answers;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getQname() {
return qname;
}
public void setQname(String qname) {
this.qname = qname;
}
public List<Answer> getAnswers() {
return answers;
}
public void setAnswers(List<Answer> answers) {
this.answers = answers;
}
}
Java
Answer.java
package com.yiibai;
public class Answer {
private int id;
private