2009-03-24 17 views
13

Hibernate sigue escupiendo rastros SQL a stdout, y no puedo encontrar la manera de cambiar una propiedad de configuración de Hibernación detrás de un adaptador JPA. Este es el grano de primavera para el EntityManagerFactory:No se puede hacer que hibernate deje de mostrar SQL con Spring JPA Proveedor Adaptador

<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> 

Incluso con la propiedad showSql establece en false, Hibernate mantiene SQL impresión.

He intentado hacer un archivo hibernate.properties en mi classpath con "hibernate.show_sql = false", pero tampoco lo recogió.

+0

También probé el establecimiento de una propiedad del sistema: hibernación .show_sql = falso. Todavía no hay alegría. Insiste en arrojar declaraciones SQL. – Mojo

+0

¿Qué le parece si especifica ? – skaffman

+0

Estoy bastante seguro de que Hibernate no hace esto de manera predeterminada, por lo que sospecho que en algún otro lugar de su entorno tiene algo que ha activado showSql, y esto está teniendo prioridad sobre sus intentos de desactivarlo. – skaffman

Respuesta

18

Trate de colocarlo en persistance.xml

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

El problema es exactamente el problema. Mi jar de biblioteca de "plataforma" incluía un archivo persistence.xml que activa show_sql y no se reemplaza en el tiempo de ejecución ni en el de Spring. – Mojo

+0

También busque '@ DataJpaTest (showSql = true) 'anotación en una clase" principal ". Sin embargo, esto es algo de Spring Boot: [org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest] (https://docs.spring.io /spring-boot/docs/current/api/index.html?org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTest.html) –

3

Por lo que yo sé, Hibernate también registrará sentencias SQL si el registro para org.hibernate.SQL sucede en DEBUG o ALL nivel, lo que podría intentar incapacitante que (por ejemplo, con log4j.logger.org.hibernate.SQL=info cuando se utiliza Log4J).

+0

Gracias, desafortunadamente ya tengo org.hibernate.SQL logging configurado a ERROR en log4j. :( – Mojo

3

Si está utilizando la primavera asegurarse de que usted no tiene el conjunto de propiedades a showSql cierto

que estaba haciendo esto por mí mismo

<bean id="vendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="showSql" value="false"/> 
</bean> 
9
<property name="jpaProperties"> 
    <props> 
     <prop key="hibernate.show_sql">false</prop> 
    </props> 
</property> 

esto también funcionará

1

Agregar a su log4j.properties

log4j.logger.org.hibernate = WARN 
0

Esto funcionó para mí:

spring.jpa.show-sql=false 
+0

Corrección: agregue lo siguiente a su application.properties: 'logging.level. org.hibernate.SQL = OFF' – dicho

+1

Si tiene una corrección, realice esa edición en su publicación, no la arroje simplemente como un comentario. – CubeJockey

0

Aquí hay tres maneras (que son probablemente otros) para mostrar u ocultar hibernación consultas SQL:

  1. En la configuración del logger (nivel DEPURAR para el logback):

    <logger name="org.hibernate.SQL" level="DEBUG" /> 
    
  2. En config primavera (por ejemplo, en config 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. En persistence.xml

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

Parece que la configuración del registrador es independiente de la configuración de persistencia. En cuanto a la configuración de persistencia, parece que la primavera anula el persistence.xml (lo probé con un persistence.xml cargado por Spring, si este no es el caso, no sé cuál será el comportamiento).

Una diferencia entre las dos configuraciones es el registro de resultado, con logback que se verá así:

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

Con la configuración de persistencia:

Hibernate: alter table ...
+0

En realidad, la pregunta era acerca de cómo ** detener ** el registro de SQL. – naXa

Cuestiones relacionadas