如何在PagingAndSortingRepository中记录@Query? [英] How to log @Query in PagingAndSortingRepository?

查看:203
本文介绍了如何在PagingAndSortingRepository中记录@Query?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法记录一些自定义的 @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 under src/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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆