如何在PagingAndSortingRepository中记录@Query? [英] How to log @Query in PagingAndSortingRepository?
问题描述
有没有办法记录一些自定义的 @Query方法?
以下是我的代码示例:
@Query(value =SELECT * FROM transfer WHERE char_length(internal_id)= 5+
AND internal_id REGEXP'^ [0- 9] + $'AND project_id =:projectId order by created_at desc limit 1,nativeQuery = true)
传递findLastWithDefaultOurIdForProject(@Param(projectId)String projectId);它是用 interface 写成的,它扩展了 spring-data em> PagingAndSortingRepository 。
我尝试在属性文件中添加这些行来记录它:
log4j.logger.org.hibernate.SQL = DEBUG
log4j.logger.org.hibernate.type = TRACE
但是我只能得到没有真正值的查询从我的服务传递到存储库接口?
解决方案尝试此配置:
application.properties
spring。 jpa.properties.hibernate.format_sql = true
spring.jpa.database = h2
添加
logback.xml
文件在src / main / resources
下配置 Hibernate 以显示传递的参数到SQL查询:
$ b $ p $ lt; code> logback.xml<?xml version =1.0encoding =UTF-8?>
<配置>
< include resource =org / springframework / boot / logging / logback / base.xml/>
< logger name =org.springframework.weblevel =DEBUG/>
< appender name =STDOUTclass =ch.qos.logback.core.ConsoleAppender>
<编码器>
< pattern>% - 4relative [%thread]%-5level%logger {35} - %msg%n< / pattern>
< /编码器>
< / appender>
< logger name =org.hibernate.SQLadditivity =false>
< level value =DEBUG/>
< appender-ref ref =STDOUT/>
< / logger>
< logger name =org.hibernate.typeadditivity =false>
< level value =TRACE/>
< appender-ref ref =STDOUT/>
< / logger>
< / configuration>
您可以找到工作演示项目在我的GitHub仓库中。
Is there a way to log some custom @Query method?
Here is example of my code:
@Query(value = "SELECT * FROM transfer WHERE char_length(internal_id) = 5 " + "AND internal_id REGEXP '^[0-9]+$' AND project_id = :projectId order by created_at desc limit 1", nativeQuery = true) Transfer findLastWithDefaultOurIdForProject(@Param("projectId") String projectId);
It's written in interface that extends spring-data PagingAndSortingRepository.
I have tried to log it with adding these lines in property file:
log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE
but I only get queries without real values passed from my service to repository interface?
解决方案Try this configuration:
application.properties
spring.jpa.properties.hibernate.format_sql=true spring.jpa.database=h2
Add
logback.xml
file undersrc/main/resources
to configure Hibernate to show parameters passed to the SQL Query:
logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <logger name="org.springframework.web" level="DEBUG"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender> <logger name="org.hibernate.SQL" additivity="false" > <level value="DEBUG" /> <appender-ref ref="STDOUT" /> </logger> <logger name="org.hibernate.type" additivity="false" > <level value="TRACE" /> <appender-ref ref="STDOUT" /> </logger> </configuration>
You can find the working Demo Project in my GitHub repository.
这篇关于如何在PagingAndSortingRepository中记录@Query?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!