环境:jboss-portal + jsp + Hibernate + MySQL。
下面的代码貌似对我有所帮助,现在问题聚焦在xml配置文件中使用定义<one- to many>的Set,
Set set = getSubSubjects();
只要在jsp中使用到set就会报错,而且jboss中的控制台显示是由于jasperExeption引起的,没有显示Hibernate的错误信息。
我和下面代码的不同之处是级联的设置:cascade= "delete - all -dophin" !
也许问题就是出在这里,下午过去测试一下便知了。
------------------------------------------------------------
Node对象中包含以下两个属性,
private
Node parent;
//
父对象
private
Set children
=
new
HashSet();
//
孩子集合
其对应的配置文件如下:
1
<
many-to-one
2
name
="parent"
3
class
="com.norteksoft.bom.model.Node"
4
cascade
="none"
5
outer-join
="auto"
6
column
="FK_NODE_ID"
7
/>
8
9
<
set
10
name
="children"
11
lazy
="true"
12
cascade
="all"
13
sort
="unsorted"
14
>
15
16
<
key
17
column
="FK_NODE_ID"
18
>
19
</
key
>
20
21
<
one-to-many
22
class
="com.norteksoft.bom.model.Node"
23
/>
24
25
</
set
>
26
27
<
many-to-one2
name
="parent"
3
class
="com.norteksoft.bom.model.Node"
4
cascade
="none"
5
outer-join
="auto"
6
column
="FK_NODE_ID"
7
/>
8

9
<
set10
name
="children"
11
lazy
="true"
12
cascade
="all"
13
sort
="unsorted"
14
>
15

16
<
key17
column
="FK_NODE_ID"
18
>
19
</
key
>
20

21
<
one-to-many22
class
="com.norteksoft.bom.model.Node"
23
/>
24

25
</
set
>
26

27
下面是如何使用的代码,当然会用到递归:
1
/**
2
* 查询所有孩子节点
3
* @param node Node
4
* @param list List
5
* @return List
6
*/
7
public List findAllChildrenNodes(Node node, List list) {
8
if (node.getChildren().size() == 0) {
9
return list;
10
} else {
11
for (Iterator it = node.getChildren().iterator(); it.hasNext(); ) {
12
Node theNode = (Node) it.next();
13
list.add(theNode);
14
findAllChildrenNodes(theNode, list);
15
}
16
17
return list;
18
}
19
}
20
21
/**2
* 查询所有孩子节点3
* @param node Node4
* @param list List5
* @return List6
*/7
public List findAllChildrenNodes(Node node, List list) {8
if (node.getChildren().size() == 0) {9
return list;10
} else {11
for (Iterator it = node.getChildren().iterator(); it.hasNext(); ) {12
Node theNode = (Node) it.next();13
list.add(theNode);14
findAllChildrenNodes(theNode, list);15
}16

17
return list;18
}19
}20

21
本文探讨了在JBoss Portal环境下,使用Hibernate进行多对一及一对多关系映射时遇到的问题。主要关注XML配置文件中<one-to-many>标签的使用,并详细记录了一个具体的案例,包括配置文件片段与递归遍历子节点的实现代码。
1454

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



