DennisGuo
DennisGuo
2012-09-20 19:33

如何用Hibernate查询备份表(表名与实体定义的表名不相同了)

  • 数据库
  • hibernate

遇到的问题:

 

用Hibernate查询备份表中的记录,比如实体对象Student,映射的表名是student。

在oracle数据库中为这个student表定义了触发器,每个月生成一张备份表,

表名如:student_201201,student_201202,student_201203,student2012_04.....;

 

现在要从这些备份表里面查询记录,可是由于Student实体已经映射了表名为student,所以现在用StudentDao查询备份表中的记录就会报错:

 

org.hibernate.hql.ast.QuerySyntaxException:student_2012_05 is not mapped...;

 

我在StudentDao中的查询方法是这么写的:

 

 

public List<Student> getBackupStudent(String year,String month){
    List<Student> students = new ArrayList<Student>();
    String sql = " SELECT student FROM student_"+year+month+"  student ";"
    Query query = this.createQuery(sql);
    students = query.list();
    return students;
}

 

Hibernate 后台生成的查询语句是这样的:

 

SELECT student FROM student_201205 student 

 

问题即使那个错误,这个student_201205没有对应的实体,应为他是用数据库的触发器生成的表,Hiberanate 就说它没有Mapped...

像我这样的问题,我想大家也应该可能遇到过吧,请问大家是如何解决的啊!!!!

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

3条回答