2014-03-11 2 views
4

Я работаю с Spring Framework, и я следую разработке, основанному на тестах. Я получаю исключение, но я не совсем уверен, почему так мне хотелось бы узнать, что на самом деле работает jdbc. Попытка запроса следующее:Отладка SQL-запросов с помощью 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 (который я нахожу бесконечно бесполезным), поэтому я не знаю, что может быть неправильным.

EDIT: теперь добавлен 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 
+0

И это не полезно, потому что? Ваш запрос занимает слишком много времени. Проверьте, нет ли каких-либо блокировок в вашей базе данных. –

+0

Я нашел, что это выбрасывает это независимо от того, что проблема была - ошибки ограничения внешнего ключа также вызвали это. – DrugCrazed

ответ

6

Вы можете включить трассировку запросов с помощью:

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] 
+0

Если я не пропустил ни одного шага, он не сказал мне, каков фактический запрос, который он выполнял, - он дает что-то вроде «INSERT INTO PROJECTS (ID, REVISION, PROJECT_NAME) VALUES (?,?,?)» Вместо чего-то как «INSERT INTO PROJECTS (ID, REVISION, PROJECT_NAME) VALUES (« proj1 », 1,« project »)' – DrugCrazed

+0

(он также не помог с этим фактическим запросом, он даже не появился в моем журнале) – DrugCrazed

+0

вы показываете свою конфигурацию log4j? –