1

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 を使用しても、テーブルのすべてのレコードを本当にクエリしますか?

4

1 に答える 1

1

いいえ、すべてのレコードを読み取るわけではありません。db コネクタに送信されるクエリは 2 番目のクエリです。

于 2012-05-18T07:42:00.493 に答える