hibernate关于对有联结主键表的增删改查探讨
hibernate关于对有联合主键表的增删改查探讨
现在有3张表
学生表Stu
实验表Lib
成绩表Score
这三张表的POJO分别是
Stu
Lib
Score
*********************************************************
现在我想实现如下功能:
0.在页面上显示某个学生所选的所有实验及成绩
1.为某个学生添加2个实验及其成绩
发现无从下手,因为代码不知道该从何写起。
因为无法用
大家一起来探讨一下这个问题。
现在有3张表
学生表Stu
create table Stu( sid Integer(10) primary key, sname varchar(45) not null )
实验表Lib
create table Lib( lid Integer(2) primary key, lname varchar(45) not null )
成绩表Score
create table Score( sid Integer(10), lid Integer(2), score varchar(2), primary key(sid,lid), foreign key (sid) references Stu(sid), foreign key (lid) references Lib (lid) )
这三张表的POJO分别是
Stu
public class Stu extends ActionForm implements java.io.Serializable { private Integer sid; private String sname; private String spwd; private Set scores = new HashSet(0); }
Lib
public class Lib extends ActionForm implements java.io.Serializable { private Integer lid; private String lname; private Set teas = new HashSet(0); private Set scores = new HashSet(0); }
Score
public class Score extends ActionForm implements java.io.Serializable { private ScoreId id; private String score; }
*********************************************************
现在我想实现如下功能:
0.在页面上显示某个学生所选的所有实验及成绩
1.为某个学生添加2个实验及其成绩
发现无从下手,因为代码不知道该从何写起。
因为无法用
List scoreList = ScoreDAO.findBySid(s0001);
大家一起来探讨一下这个问题。
1 楼
wad12302
2011-05-07
hibernate里面 直接使用简单查询一般只是查询一个表的
否则就需要 是用连接进行管理其他表,最后好像可以把所有结果都new到一个类里面去。
否则就需要 是用连接进行管理其他表,最后好像可以把所有结果都new到一个类里面去。
2 楼
fmjsjx
2011-05-09
简单来讲,问题出在你写的POJO上,hibernate是一个ORM框架,而你的POJO和数据库明显不匹配。
从结构上来讲,应当是:
Score类里有一个属性Stu、一个属性Lib和自己的属性score,这是两个反相关联;
Lib类不需要关联,但也可加入正向关联的scores(这个你已经写了);
Stu类应当有一个正向关联的scores(这个你也写了)。
这样只要查询Stu(可以直接用StuDao.get(id)方法),就可以得到scores,里面每个Score都包含Lib和score。
至于添加成绩更简单,直接save(Score)就好,不过Score里的Stu和Lib不能为空。
从结构上来讲,应当是:
Score类里有一个属性Stu、一个属性Lib和自己的属性score,这是两个反相关联;
Lib类不需要关联,但也可加入正向关联的scores(这个你已经写了);
Stu类应当有一个正向关联的scores(这个你也写了)。
这样只要查询Stu(可以直接用StuDao.get(id)方法),就可以得到scores,里面每个Score都包含Lib和score。
至于添加成绩更简单,直接save(Score)就好,不过Score里的Stu和Lib不能为空。