hibernate关于对有联结主键表的增删改查探讨

hibernate关于对有联合主键表的增删改查探讨
现在有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到一个类里面去。
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不能为空。