我正在使用带有 OracleDriver 的 eclipse persistence jpa,但我不明白为什么它会在日志中显示一些额外的查询。例子:
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,它真的会查询表中的所有记录吗?