| I'm writing a code using JPA (Hibernate) and would like to check LIMIT and OFFSET parameters in the log. I added Logback and set log levels properly, but I can't do above. logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%-5level][%-10thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<!-- Print SQL to log-->
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
</configuration>
My JPA code
EntityManagerFactory emf = Persistence.createEntityManagerFactory("FooPU");
EntityManager em = emf.createEntityManager();
String jpql = "SELECT f FROM Foo f ORDER BY f.id";
List<Foo> fooList = = em.createQuery(jpql, Foo.class)
.setFirstResult(1)
.setMaxResults(3)
.getResultList();
for (Foo f : fooList) {
System.out.println(f);
}
em.close();
emf.close();
Logs (Actual) No parameters of LIMIT and OFFSET are shown. I can see just an SQL.
[DEBUG][main ] org.hibernate.SQL - select foo0_.id as id1_1_, ... from Foo foo0_ order by foo0_.id limit ?, ?
On a side note, other SQL parameters are shown properly.
[DEBUG][main ] org.hibernate.SQL - select foo0_.id as id1_0_0_, ... from Foo foo0_ where foo0_.id=?
[TRACE][main ] o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [10]
Logs (Expected)
[DEBUG][main ] org.hibernate.SQL - select foo0_.id as id1_1_, ... from Foo foo0_ order by foo0_.id limit ?, ?
[TRACE][main ] o.h.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - [1]
[TRACE][main ] o.h.type.descriptor.sql.BasicBinder - binding parameter [2] as [INTEGER] - [3]
|