页面没结果显示ListStudentAction中的execute如下:
public String execute() throws Exception {
Map request = (Map) ActionContext.getContext().get("request"); request.put("list", studentservice.findAll());
return "success";
}
DAO的实现类如下: @SuppressWarnings("unchecked")
public List<Student> findAllStudents() {
String hql = "from User";
return (List<Student>)this.getHibernateTemplate().find(hql);
}user.hbm.xml如下
<one-to-one name="student" class="com.sign_up.bean.Student"
cascade="all"></one-to-one>student.hbm.xml如下
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="foreign">
<param name="property">user</param></generator>
</id>
<one-to-one name="user" class="com.sign_up.bean.User" constrained="true"></one-to-one>
user持久化
private Integer id;
private String password;
private String username;
private Student student;
student持久化
private Integer id;
private Grade grade;
private Timestamp date;
private String teamName;
private String motto;
private String tel;
private String qq;
private String stuNumber;
private String stuName;
private Integer stuId;
private User user;
两个表主键都是id
CREATE TABLE `student` (
`date` datetime default NULL,
`teamName` varchar(20) default NULL,
`id` int(20) NOT NULL auto_increment,
`motto` varchar(1000) default NULL,
`Tel` varchar(50) default NULL,
`QQ` varchar(50) default NULL,
`stu_number` varchar(50) default NULL,
`stu_name` varchar(50) default NULL,
`gra_id` int(20) default NULL,
`stu_id` int(20) default NULL,
PRIMARY KEY (`id`),
KEY `gra_id` (`gra_id`),
KEY `id` (`id`),
CONSTRAINT `student_ibfk_1` FOREIGN KEY (`gra_id`) REFERENCES `grade` (`gra_id`),
CONSTRAINT `student_ibfk_2` FOREIGN KEY (`id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
页面输出
<s:iterator value="#request.list" >
<tr>
<td><s:property value="#id"/></td>
<td><s:property value="#username"/></td>
<td><s:property value="#password"/></td>
<td><s:property value="#student.teamName"/>
</td>
<td><s:a href="findStudentById.action?id=%{id}">修改</s:a></td>
问题是在这个页面不能输出结果 跳转到这个页面时MyEclipse打印如下结果
Hibernate: select user0_.id as id0_, user0_.password as password0_, user0_.username as username0_ from sign_up.user user0_ where user0_.username='hubujun' and user0_.password='410300'
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select user0_.id as id0_, user0_.password as password0_, user0_.username as username0_ from sign_up.user user0_
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
Hibernate: select student0_.id as id7_0_, student0_.gra_id as gra2_7_0_, student0_.date as date7_0_, student0_.teamName as teamName7_0_, student0_.motto as motto7_0_, student0_.Tel as Tel7_0_, student0_.QQ as QQ7_0_, student0_.stu_number as stu8_7_0_, student0_.stu_name as stu9_7_0_, student0_.stu_id as stu10_7_0_ from sign_up.student student0_ where student0_.id=?
btw
,如果你想从user关联到student,那么USER表里面应该有一个外键到statudent。
String hql = "from User";
return (List<Student>)this.getHibernateTemplate().find(hql);
}不明白,为什么你页面上需要的是User表的内容,而你上面却是返回Student类型的List呢?你改成:
public List<User> findAllStudents() {
String hql = "from User";
return (List<User>)this.getHibernateTemplate().find(hql);
}
你先改成上面试试,如果不行的话,可能是hibernate的lazy=false,把hql语句修改以下:String hql = "from User as u left out join fetch u.student";
<tr>
<td><s:property value="id"/>
</td>
<td><s:property value="username"/>
</td>
<td><s:property value="password"/>
</td>
<td><s:property value="qq"/>
</td>