Невозможно остановить отображение спящего режима в SQL с помощью Spring JPA Vendor Adapter - PullRequest
15 голосов
/ 25 марта 2009

Hibernate продолжает выводить трассировки SQL на стандартный вывод, и я не могу понять, как изменить свойство конфигурации Hibernate, когда оно скрыто за адаптером JPA. Это bean-компонент Spring для entityManagerFactory:

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="ssapDataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" >
            <property name="showSql" value="false"/>
        </bean>
    </property>
</bean>

Даже если для свойства showSql установлено значение false, Hibernate продолжает печатать SQL.

Я пытался создать файл hibernate.properties в моем пути к классам с помощью "hibernate.show_sql = false", но он также не поднял его.

Ответы [ 7 ]

20 голосов
/ 12 августа 2009

Попробуйте установить его в persistance.xml

<persistence>
  <persistence-unit name="PU">
    <properties>
      <property name="hibernate.show_sql" value="false"/>
    </properties>
  </persistence-unit>
</persistence>
9 голосов
/ 10 октября 2012
<property name="jpaProperties">
    <props>
        <prop key="hibernate.show_sql">false</prop>
    </props>
</property>

это также будет работать

3 голосов
/ 03 мая 2009

Если вы используете spring, убедитесь, что для свойства showSql не установлено значение true

Я делал это сам

<bean id="vendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean>
3 голосов
/ 25 марта 2009

Насколько мне известно, Hibernate также будет регистрировать операторы SQL, если регистрация для org.hibernate.SQL происходит на уровне DEBUG или ALL, поэтому вы можете попробовать отключить это (например, с log4j.logger.org.hibernate.SQL=info при использовании Log4J).

1 голос
/ 29 апреля 2013

добавить это в ваши log4j.properties

log4j.logger.org.hibernate = WARN
0 голосов
/ 25 августа 2016

Вот три способа (они, вероятно, другие), чтобы показать или скрыть запросы Hibernate SQL:

  1. В конфигурации регистратора (уровень DEBUG для возврата):

    <logger name="org.hibernate.SQL" level="DEBUG" />
    
  2. В весеннем конфиге (например, в конфиге java):

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    final LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
    //...
    final Properties jpaProperties = new Properties(); // java.util
    //TODO replace "true" by a variable
    jpaProperties.setProperty("hibernate.show_sql", "true"); 
    lef.setJpaProperties(jpaProperties);
    return lef;
    }
    
  3. В постоянстве.xml

    <property name="hibernate.show_sql" value="true" />
    

Похоже, что конфигурация регистратора не зависит от конфигурации персистентности. Что касается конфигурации персистентности, кажется, что spring переопределяет файл persistence.xml (я тестировал его с помощью файла persistence.xml, загруженного Spring, если это не так, я не знаю, как будет вести себя)

Разница между этими двумя конфигурациями заключается в регистрации результатов, при обратной записи это будет выглядеть так:

2016-08-25 16:05:39,436 DEBUG org.hibernate.SQL(92) - alter table ...

При постоянной конфигурации:

Hibernate: alter table ...
0 голосов
/ 31 марта 2016

Это сработало для меня:

spring.jpa.show-sql=false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...