org.hibernate.hql.internal.ast.QuerySyntaxException: XXXX is not mapped [from XXXX]

Employees表的结构:

Employee.java代码:

package com.qiuclass.persistent;

public class Employee{
  
  private long eid;
  private String ename;
  
  public Employee(){ }
  
  public Employee(String ename){
    this.ename=ename;
  }
  
  private void setEid(long eid){
    this.eid=eid;
  }
  private long getEid(){
    return eid;
  }
  
  public void setEname(String ename){
    this.ename=ename;
  }
  public String getEname(){
    return ename;
  }
}

Employee.hbm.xml 部分代码:

<class name="com.qiuclass.persistent.Employee" table="EMPLOYEES" 
    lazy="true" select-before-update="true">
    <id name="eid" column="EID" type="long">
      <generator class="increment" />
    </id>
    <property name="ename" column="ENAME" type="string" />  
</class>

主程序部分代码:

public void createQuery(){
  Session session=sessionFactory.openSession();
  Transaction tx=session.beginTransaction();
  
  Iterator iemp=session.createQuery("from EMPLOYEES").list().iterator();
  while(iemp.hasNext()){
    Employee emp=(Employee)iemp.next();
    System.out.print(emp.getEname());
  }
  tx.commit();
  session.close();
}

当代码编译到session.createQuery("from EMPLOYEES").list().iterator(); 就报错: 
org.hibernate.hql.internal.ast.QuerySyntaxException: EMPLOYEES is not mapped [from EMPLOYEES]

Hibernate.cfg.xml配置文件上的<mapping resource="com/qiuclass/persistent/Employee.hbm.xml"/> 相对应的文件没写错。

开始时候一直在检查EMPLOYEES表各字段属性与Employee.java类属性是否不一致导致,也反复检查Employee.hbm.xml映射文件,都没找到原因。
后来经大牛指点,才知道hibernate.hql是对类进行查询的,EMPLOYEES是表名,Employee是类名,所以要改成
session.createQuery("from Employee").list().iterator();
原来又是概念没搞清楚,折腾了头天 哭

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页