使用良好的休眠习惯获取值
问题描述:
下午好! 我认为这可能是一个愚蠢的问题..使用良好的休眠习惯获取值
我已经在Hibernate中下面的代码:
query = session.createQuery ("select F from Employee F where F.email =" + email);
有谁知道我怎么能这样的查询中获取一个字段的值?
示例:我将如何获取人员(员工)的姓名。
注:我想用一个良好的Hibernate的做法......我相信这是不好的重复:
query = session.createQuery ("select F.person from Employee F where F.email =" + email);
你能帮助我吗? :)
谢谢。
答
此前休眠5.2:
String sql = "SELECT e.person FROM Employee e WHERE e.email = :email";
Query query = session.createQuery(sql)
query.setParameter("email", emailAddress);
List<Person> people = (List<Person>) query.getResultList();
在Hibernate 5.2及以后:
String sql = "SELECT e.person FROM Employee e WhERE e.email = :email";
Query query = session.createQuery(sql, Person.class);
query.setParameter("email", emailAddress);
List<Person> people = query.getResultList();
使用Hibernate的EntityManager的合并成核心为5.2.x +,你现在得到更好的类型的一部分安全的查询,以避免后来投射:)。
我不明白你的问题。如果要获取员工的姓名,请执行查询,该查询将返回一个员工,并在返回的员工上调用getName()。你在问什么?如果你想要一个只返回名称而不是整个员工的查询,那么在你的问题的第二个查询中做你正在做的事情(但是使用电子邮件的命名参数)。有什么问题? –