jpa setMaxResults额外查询

时间:2012-05-18 07:27:17

标签: sql jpa eclipselink

我正在使用eclipse持久性jpa和OracleDriver,我无法理解它为什么在日志中显示一些额外的查询。 例如:

Query q = em.createQuery("SELECT v FROM Vehicle v")
                .setFirstResult(0)
                .setMaxResults(1);

List<Vehicle> list = q.getResultList();

我在eclipselink日志中看到的是:

Execute query ReadAllQuery(referenceClass=Vehicle sql="SELECT ID, ... FROM VEHICLE")

[EL Fine]: 2012-05-18 11:03:28.076--ServerSession(763807850)--Connection(340360448)--Thread(Thread[main,5,main])

    --SELECT * FROM (SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum  FROM (SELECT ID AS a1,  .... FROM VEHICLE) a WHERE ROWNUM <= ?) WHERE rnum > ?
                bind => [1, 0]

所以,第一个查询确实让我感到害怕。它是否真的查询表中的所有记录,即使我使用setMaxResults?

1 个答案:

答案 0 :(得分:1)

不,它没有读取所有记录。发送到db连接器的查询是第二个。