我有以下代码从一个Oracle数据库的单个表中执行简单的查询。简化休眠查询
entityManager.createQuery(
"SELECT a FROM " + Person.class.getSimpleName()
+ " a WHERE lower(a.firstName) = '" + firstName + "'")
.getSingleResult();
的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 <= ?
我们的DBA表明该查询应该对性能方面的原因更简单。我怎样才能让Hibernate来简化查询 这样的:
select ID, FIRSTNAME, LASTNAME from PERSONS
where lower(FIRSTNAEM) = 'john' and rownum <= 1
感谢
首先,我将在FIRSTNAME字段上创建一个索引。 – 2013-03-15 10:14:39
@StefanBe:当where子句使用函数时,该索引将被忽略。你需要一个功能索引... – beny23 2013-03-15 10:15:26
啊好的。不知道 – 2013-03-15 10:16:54