Java 使用SpringJDBC调试SQL查询

Java 使用SpringJDBC调试SQL查询,java,spring,jdbc,Java,Spring,Jdbc,我正在使用Spring框架,并且正在进行测试驱动的开发。我得到了一个异常,但我不完全确定为什么,所以我想看看jdbc查询实际运行的是什么。尝试的查询如下所示: public OrderEntity addOrderEntity(OrderEntity orderEntity) { String query = "INSERT INTO ORDERS(ID,REVISION,CONTRACT_ID,PROJECT_ID,WORKSITE_ID,DROPZONE_ID,DESCRIPTION

我正在使用Spring框架,并且正在进行测试驱动的开发。我得到了一个异常,但我不完全确定为什么,所以我想看看jdbc查询实际运行的是什么。尝试的查询如下所示:

public OrderEntity addOrderEntity(OrderEntity orderEntity) {
    String query = "INSERT INTO ORDERS(ID,REVISION,CONTRACT_ID,PROJECT_ID,WORKSITE_ID,DROPZONE_ID,DESCRIPTION_ID,MANAGER_ID,DELIVERY_DATE,VOLUME) VALUES(?,?,?,?,?,?,?,?,?,?)";
    String id = (orderEntity.get_id() != null) ? orderEntity.get_id() : UUID.randomUUID().toString();
    jdbcTemplate.update(id,1,orderEntity.getContractNo(),orderEntity.getProjectID(),orderEntity.getWorksiteID(),orderEntity.getDropzoneID(),orderEntity.getDescriptionID(),orderEntity.getManagerID(),orderEntity.getDeliveryDate(),orderEntity.getVolume());

    return getOrderEntityById(id);
}
那么,查看JDBC正在运行的查询或获取一些有用信息的最佳方法是什么?它目前抛出
org/springframework/dao/QueryTimeoutException
(我发现这毫无帮助),所以我真的不知道会出什么问题

编辑:现在已经添加了log4j,但仍然没有得到有用的查询。属性文件如下:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5t] %-5p %c - %m%n
log4j.rootLogger=trace, stdout

log4j.logger.org.springframework.jdbc.core=DEBUG
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=DEBUG

您可以使用以下方法启用查询跟踪:

log4j.logger.org.springframework.jdbc.core = TRACE
特别是

log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
这将显示如下消息:

 TRACE StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 4, parameter value [TheValueWillBeHere]

这是没有帮助的,因为?您的查询需要太长时间才能完成。检查您的数据库是否没有任何锁。我发现无论问题是什么,它都会抛出锁-外键约束失败也会导致锁。除非我错过了一个步骤,否则它不会告诉我它运行的实际查询是什么-它会给出类似于
插入项目(ID、修订、项目名称)值(?,,?)
与我在回答中提到的类似
插入项目(ID、修订、项目名称)值(“proj1”,1,“PROJECT”)
(它对实际查询也没有帮助,它甚至没有出现在我的日志中)的内容不同,显示参数的日志是TRACE。特别是对于StatementCreatorUtils,它将显示查询参数