休眠选择查询(员工按电子邮件 ID 获取或按姓名获取)



在我的Spring Hibernate项目中,我需要单个员工对象,电子邮件地址不是id,来自我的员工表。

public Employee getEmployeeById(long employeeId) {
return (Employee) sessionFactory.getCurrentSession().get(
Employee.class, employeeId);
}

不是这个.....!

我需要这样:

public Employee getEmployeeByEmail(String empEmail) {
return (Employee) sessionFactory.getCurrentSession().get(
Employee.class, empEmail);
}

但不是工作.....

使用标准 API:

public Employee getEmployeeByEmail(String empEmail) {
Criteria crit = sessionFactory.getCurrentSession().createCriteria(Employee.class);
crit.add(Restrictions.eq("email", empEmail)); //assuming Employee entity has "email" field
return (Employee) crit.list().get(0);
}

您可以使用 Query 类来执行此操作:

public Employee getEmployeeByEmail(String empEmail) {
Query query = sessionFactory.getCurrentSession().createQuery("from Employee where email = :email");
query.setParameter("email", empEmail);
return (Employee) query.list().get(0);
}

改用 HQL 查询

from Employee e where e.email = :empEmail

具有两个参数的休眠会话#get()需要具有类型为Serializableid的第二个参数,而不是任何其他Entity字段。

尝试使用以下代码:

public Employee getEmployeeByEmail(String empEmail) {
Employee e = (Employee)
sessionFactory.getCurrentSession().createCriteria(Employee.class);
crit.add(Restrictions.eq("email", empEmail)).uniqueResult();
return e;
}

最新更新