小编Rue*_*art的帖子

简化Hibernate的查询

我有以下代码从Oracle数据库的单个表中执行简单查询.

entityManager.createQuery(
        "SELECT a FROM " + Person.class.getSimpleName() 
        + " a WHERE lower(a.firstName) = '" + firstName + "'")
        .getSingleResult();
Run Code Online (Sandbox Code Playgroud)

Hibernate生成以下sql:

select
        * 
    from
        ( select
            person0_.id as id75_,
            person0_.FIRSTNAME as FIRSTNAME75_,
            person0_.LASTNAME as LASTNAME75_
        from
            PERSONS person0_ 
        where
            lower(person0_.FIRSTNAME)='john' ) 
    where
        rownum <= ?
Run Code Online (Sandbox Code Playgroud)

我们的DBA建议,出于性能原因,此查询应该更简单.如何使hibernate简化查询,如下所示:

select ID, FIRSTNAME, LASTNAME from PERSONS 
where lower(FIRSTNAEM) = 'john' and rownum <= 1
Run Code Online (Sandbox Code Playgroud)

谢谢

java oracle hibernate

7
推荐指数
2
解决办法
1382
查看次数

标签 统计

hibernate ×1

java ×1

oracle ×1