我已将 java 类名作为“Employee”和 db 表名作为“EMPLOYEE”的类。该表有很多列,但我在员工类上只声明了两个变量。以下是Employee类的代码:
package com.mmi.education;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="EMPLOYEES")
public class Employee {
private int id;
private String firstname;
private String lastname;
@Id
@Column(name="EMPLOYEE_ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="FIRST_NAME")
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
@Column(name="LAST_NAME")
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
在 TestEmployee 类中,我编写了以下代码:
package com.mmi.education;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class TestEmployee {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AnnotationConfiguration config= new AnnotationConfiguration();
config.configure("hibernate.cfg.xml");
SessionFactory factory = config.buildSessionFactory();
Session session = factory.getCurrentSession();
//session.beginTransaction();
Query query = session.createQuery("FROM Employee");
List<Employee> employees = query.list();
for(Employee employee:employees){
System.out.println("ID=>"+employee.getId()+"\tFirstName=>"+employee.getFirstname()+"\tLastName=>"+employee.getLastname());
}
}
}
首先,我很困惑是写“FROM EMPLOYEES”还是“FROM Employee”。其次,在POJO类(Employee)中声明这两个变量是否安全,而表中有很多列。
最后,在执行代码时,我面临以下异常:
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: Employee is not mapped [FROM Employee]
我的数据库是本地安装的(Oracle 10g XE)