页面没结果显示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=?

解决方案 »

  1.   

    debug下你的DAO的 findAllStudents()有没有返回结果。
    btw
    ,如果你想从user关联到student,那么USER表里面应该有一个外键到statudent。
      

  2.   

    能说下怎么测试findAllStudents()吗 我新手   两张表关联是没有问题的  我用的是主键关联的方法  你说的是用外键关联的方法
      

  3.   

    public List<Student> findAllStudents() {
    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";
      

  4.   

    我把List<Student>改成List<User>了  也加了lazy=false进去了  现在可以查到数据了  但是在页面数据还是没有显示  我在检查下  我是把List<User>放到一个user中  显示页面时这样的<s:iterator value="user" >
        <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>
      

  5.   

    弄好了  是struts 配置出了错 不要加type="redirect"