环境:jboss-portal + jsp + Hibernate + MySQL。
下面的代码貌似对我有所帮助,现在问题聚焦在xml配置文件中使用定义<one- to many>的Set,
Set set = getSubSubjects();
只要在jsp中使用到set就会报错,而且jboss中的控制台显示是由于jasperExeption引起的,没有显示Hibernate的错误信息。
我和下面代码的不同之处是级联的设置:cascade= "delete - all -dophin" !
也许问题就是出在这里,下午过去测试一下便知了。
------------------------------------------------------------
Node对象中包含以下两个属性,



其对应的配置文件如下:
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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

