【问题标题】:Get values using good Hibernate practices使用良好的 Hibernate 实践获取值
【发布时间】:2017-02-15 18:44:03
【问题描述】:

大家下午好! 我认为这可能是一个愚蠢的问题..

我在 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);

你能帮帮我吗? :)

谢谢。

【问题讨论】:

  • 我不明白你的问题。如果要获取员工的姓名,请执行查询,该查询将返回一个 Employee,并在返回的员工上调用 getName()。你问的是这个吗?如果您想要一个只返回姓名而不是整个员工的查询,那么在您的问题的第二个查询中执行您正在执行的操作(但对电子邮件使用命名参数)。有什么问题?

标签: java hibernate jsp servlets


【解决方案1】:

在 Hibernate 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+ 的一部分合并到 Core 中,您现在可以获得更好的类型安全查询,以避免以后强制转换:)。

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    相关资源
    最近更新 更多