在我的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);
}
但是没有工作......
答案 0 :(得分:1)
使用Criteria 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);
}
答案 1 :(得分:0)
使用HQL查询
from Employee e where e.email = :empEmail
带有两个参数的Hibernate Session#get()需要具有Serializable
id 类型的第二个参数,而不是任何其他Entity
字段。
答案 2 :(得分: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);
}
答案 3 :(得分:0)
尝试使用以下代码:
public Employee getEmployeeByEmail(String empEmail) {
Employee e = (Employee)
sessionFactory.getCurrentSession().createCriteria(Employee.class);
crit.add(Restrictions.eq("email", empEmail)).uniqueResult();
return e;
}