我收到错误消息,例如:
org.hibernate.hql.internal.ast.QuerySyntaxException: Employee is not mapped [from Employee]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Employee is not mapped [from Employee]",
"trace": "org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: Employee is not mapped [from Employee];
我已经创建了下面给出的模态
@Entity
@Table(name="employee_list")
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column
private Integer id;
@Column
private String name;
@Column
private String gender;
@Column
private String department;
@Column
private Date dob;
// getters/setters
}
我的实施情况:
@Repository
public class EmployeeDAOImpl implements EmployeeDAO {
@Autowired
private EntityManager entityManager;
@Override
public List<Employee> get() {
Session currentSession = entityManager.unwrap(Session.class);
Query<Employee> query = currentSession.createQuery("from Employee", Employee.class);
List<Employee> list = query.getResultList();
return list;
}
}
我丢失了一些东西。
我无法确切识别出什么。
答案 0 :(得分:1)
HQL 应该如下:
currentSession.createQuery("select e from Employee e", Employee.class);
此外,您可以使用 标准API :
currentSession.createCriteria(Employee.class).list();
有用的参考文献
:答案 1 :(得分:1)
尝试将@EntityScan(basePackage="*the package where your entity lies*")
(或类似名称)注释添加到您的EmployeeDAOImpl
类中。该查询看起来不错。对于HQL,必须使用类型名称,而不是表名称。
如果您使用的是Spring JPA,还可以尝试使用提供的接口,例如JPARepository或CrudRepository
答案 2 :(得分:1)
@Entity应该来自JPA库,而不是来自休眠库。而且,您应该在查询中使用实体名称:
session.createQuery("from Employee", Employee.class);