操作情况是:对一个表执行查询,查询的这个表是主表,表register为从表,主表Buy在实体类的写法如下(部分代码):
         @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="id")
public Register getRegister() {
return register;
}
public void setRegister(Register register) {
this.register = register;
}
我向表里添加数据时,能成功,但当使用查询时,查询不出数据,为什么,是不是我的查询语语句写法有误,还是多对一查询有时语句有什么要注意的,谢谢各位了
查询语句为:
getHibernateTemplate().find("from Buy order by buytime");
说的可能不详细,查询的全代码没贴上去,我在线,还不清楚我要问什么的,直接聊,

解决方案 »

  1.   

    @ManyToOne(cascade={ CascadeType.REFRESH,CascadeType.MERGE,CascadeType.PERSIST })
    试一试这个
      

  2.   

    fetch = FetchType.LAZY  改成 fetch=FetchType.EAGER试试。这个是迫切抓取,前一个是懒加载,在你用到的时候才去数据库抓取。session关闭后就差不到从表的数据了。
      

  3.   

    不知道是不是你查询语句的问题。我一般都不是这样查的。一般都是:Student student =new Student("zbc","0100",45,0);
    studentService.addStudent(student);
    String studentname = (String) this.jdbcTemplate.queryForObject(
    "select stud_name from tb_student where stud_id=?",
    new Object[] { student.getId()}, String.class); assertEquals(student.getStudName(), studentname);
      

  4.   

    查询方式不同,我用的是SPRING,对HIBERNATE的封装,简化了对数据库的操作,但这不是问题的关键,我是想问这个实体类是否写错了,如果写错了,那为什么又能添加数据