与介绍Hibernate框架映射关系时一样,这里将之前的表结构改成如下的两张。
看一下新表attack_document_parents的表结构,表12.1:
表12.1 attack_document_parents的表结构
字段名 |
说明 |
KEY |
Index |
类型 |
长度 |
parents_attack_event_code |
主攻击代号 |
K |
I |
varchar |
30 |
pattack_mean |
主攻击说明 |
|
|
varchar |
1000 |
修改之前的fw_attacksolution表结构如表12.2:
表12.2 fw_attacksolution的表结构
字段名 |
说明 |
KEY |
Index |
类型 |
长度 |
attack_event_code |
攻击代号 |
K |
I |
varchar |
30 |
attack_mean |
用户名 |
|
|
varchar |
1000 |
attack_action |
攻击解决方案 |
|
|
varchar |
1000 |
parents_attack_event_code |
主攻击代号 |
F |
|
varchar |
30 |
这两张表的对应关系,从attack_document_parents表来看就是“一对多”的关系,而从fw_attacksolution表来看就是“多对一”的关系。
fw_attacksolution表的parents_attack_event_code字段作为外键与attack_document_parents的parents_attack_event_code字段相关联。
1. 映射attack_document_parents的VO
在这里假设一个映射attack_document_parents表的VO名为PattackDocument.java。VO的变量属性就不多描述了,这里仅给出作为关系映射的变量属性那一段代码:
/**
* 由于attack_document_parents与fw_attacksolution是一对多的关系
* 所以在对象之间的关系中就使用List来表明这层关系
*/
private ArrayList attackSolution;
public ArrayList getAttackSolution() {
return attackSolution;
}
public void setAttackSolution(ArrayList attackSolution) {
this.attackSolution = attackSolution;
}
这段代码表示映射attack_document_parents表与fw_attacksolution表之间为一对多关系的,是一个名为attackSolution的变量属性,声明为ArrayList类型。attackSolution变量属性表明了在PattackDocument VO中,对于AttackSolution VO,一个PattackDocument VO可以包含多个AttackSolutionVO。
2. 映射fw_attacksolution的VO
映射fw_attacksolution表的VO名为AttackSolution.java。VO的变量属性不作过多描述。这里给出作为关系映射的变量属性的一段代码:
/**
* 由于fw_attacksolution与attack_document_parents是多对一的关系
* 所以在对象之间的关系中
* 每个实例AttackSolution都会对应一个PattackDocument
*/
private PattackDocument pattackDocument;
public PattackDocument getPattackDocument() {
return pattackDocument;
}
public void setPattackDocument(PattackDocument pattackDocument) {
this.pattackDocument = pattackDocument;
}
这段代码表示映射fw_attacksolution表与attack_document_parents表之间为多对一关系的,是一个名为pattackDocument的变量属性,声明其为PattackDocument类型。pattackDocument变量属性表明了在AttackSolution VO中,对于PattackDocument VO,一个AttackSolution VO只能指定一个PattackDocument VO。