2016-03-04 3 views
1

Я использую WildFly 10 с Hibernate и некоторые JDBC. У меня нет журналов вообще если я открою мой источник данных, как это:Firebird logging so much

<datasource jta="true" jndi-name="java:jboss/Firebird" pool-name="FirebirdPool" enabled="true" spy="true" use-ccm="true" statistics-enabled="false"> 
<connection-url>jdbc:firebirdsql:localhost/3050:C:\banco\COMPLEXO140116.FDB</connection-url> 

Но если я объявляю прохождение:

?defaultResultSetHoldable=True&amp;encoding=WIN1252 

он записывает

09: 54: 00384 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper (задание по умолчанию-3) Код предупреждения SQL: 0, SQLState: 01000

09: 54: 00,384 WARN [org .hibernate.engine.jdbc.spi.SqlExceptionHelper] (по умолчанию задача-3) нулевой

при каждом запросе

+0

Эти сообщения журнала генерируются Hibernate, у вас есть дополнительная информация, подобная stacktrace или сообщение об ошибке? Вы пробовали, какой из двух свойств вызывает это (моя догадка была бы 'defaultResultSetHoldable = true') –

ответ

2

Протоколирование осуществляется Hibernate, а не Firebird или JayBird. Причина этого в том, что вы указали defaultResultSetHoldable=True. Этот параметр заставит все утверждения иметь устойчивость HOLD_CURSORS_OVER_COMMIT. В Jaybird HOLD_CURSORS_OVER_COMMIT реализован с использованием TYPE_SCROLL_INSENSITIVE, но по умолчанию TYPE_FORWARD_ONLY, поэтому Jaybird обновляет тип набора результатов и в соответствии со спецификацией JDBC (раздел 15.1.1 JDBC 4.2) это регистрирует предупреждение, которое затем регистрируется Hibernate ,

Если водитель не поддерживает тип прилагаемого к методам createStatement, prepareStatement или prepareCall, он генерирует SQLWarning на объект Connection, который создает заявление.

К сожалению, ошибка в SQLWarning подкласса, используемый JayBird вызывает сообщение, которое будет null вместо фактического сообщения («Holdable результирующий набор должен быть прокручиваются.»).

Ваши параметры либо не задают defaultResultSetHoldable=True, либо конфигурируют Hibernate, чтобы не регистрировать предупреждения с использованием свойства конфигурации hibernate.jdbc.log.warnings=false.

Из любопытства: почему вы указываете defaultResultSetHoldable=True? Это вариант, который может быть плохим для производительности, поскольку он кэширует весь набор результатов в драйвере, и он в первую очередь предназначен как средство обхода для приложений, которые пытаются получить доступ к набору результатов после (автоматического) фиксации.

+0

У меня есть приложение JSF, которое использует JasperReport, когда оно вызывает генерацию PDF, если опция' defaultResultSetHoldable = True' не установлена, то у меня есть ошибка. Это известная проблема: [link] (https://www.google.com.br/search?q=jasper+reports+ "defaultResultSetHoldable% 3DTrue") – erickdeoliveiraleal

+0

Спасибо, я посмотрю отчеты о яшме, потому что это звучит подобно тому, как он пытается использовать результирующий набор после его закрытия. В auto commit выполнение другого оператора в том же соединении закрывает набор результатов ранее выполненных операторов, как того требует спецификация JDBC. –

+0

Итак, в этом случае, должен ли я иметь соединение с этим параметром только для Jasper и другого соединения с остальной частью приложения? – erickdeoliveiraleal