java 如何确保我的@Sql查询显示在我的控制台日志中?

k5ifujac  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(105)

这是一个MRE:

package com.example.h2_demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.jdbc.Sql;

@DataJpaTest
@Sql(
        executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD,
        scripts = {"/create_user_table.sql", "/insert_user.sql"}
)
public class H2DemoApplicationTest {
    @Test
    void testNothing() {
    }

    @Test
    void testNothingOneMoreTime() {
    }
}
-- create_user_table.sql

CREATE TABLE IF NOT EXISTS users(
  id INTEGER PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  last_name VARCHAR(50)
);
-- insert_user.sql

INSERT INTO users
VALUES (1, 'John', 'Doe');

我稍微修改了一下脚本,现在可以相当肯定@Sql脚本 * 已经 * 执行。但是,当您查看日志时,这并不明显。不存在相关的CREATEINSERT语句
我确实尝试了我在互联网上看到的每一个建议的属性(包括StackOverflow)。在这一点上,我的属性是:

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.type=trace

logging.level.org.springframework.jdbc.core=TRACE
logging.level.org.springframework.test.context.jdbc=debug


我仔细检查并确保这些值存在于target文件夹的application.properties
仍然没有日志(抱歉的图像,没有看到一个解决方案)
text search for "insert" provides no matches
如何在日志中查看这些@Sql查询?

7lrncoxx

7lrncoxx1#

如果您想查看正在执行哪些@Sql脚本,请将org.springframework.test.context.jdbc日志记录类别设置为DEBUG
如果您想查看正在执行哪些SQL语句,请将org.springframework.jdbc.datasource.init日志记录类别设置为DEBUG
请注意,我还打开了一个ticket来改进Spring中的文档以反映这一点。

相关问题