Невозможно заставить hibernate прекратить показ SQL с помощью адаптера поставщика Spring JPA

Hibernate продолжает извергать SQL-трассировки в stdout, и я не могу понять, как изменить свойство конфигурации Hibernate, когда оно скрыто за адаптером JPA. Это Spring bean для 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", но он тоже не выбрал это.

Ответ 1

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

<persistence>
  <persistence-unit name="PU">
    <properties>
      <property name="hibernate.show_sql" value="false"/>
    </properties>
  </persistence-unit>
</persistence>

Ответ 2

<property name="jpaProperties">
    <props>
        <prop key="hibernate.show_sql">false</prop>
    </props>
</property>

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

Ответ 3

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

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

<bean id="vendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean>

Ответ 4

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

Ответ 5

добавьте это в свой файл log4j.properties

log4j.logger.org.hibernate = WARN

Ответ 6

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

spring.jpa.show-sql=false

Ответ 7

Вот три способа (они, вероятно, другие), чтобы показать или скрыть запросы на спящий режим sql:

  • В конфигурации logger (уровень DEBUG для журнала):

    <logger name="org.hibernate.SQL" level="DEBUG" />
    
  • В Spring config (например, в java config):

    @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;
    }
    
  • В файле persistence.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 ...