2009-03-24 26 views
13

Hibernate đang tiếp tục kích hoạt các dấu vết SQL để stdout và tôi không thể tìm ra cách thay đổi thuộc tính cấu hình Hibernate khi ẩn đằng sau bộ điều hợp JPA. Đây là bean Spring cho thực thểManagerFactory:Không thể ngừng hiển thị SQL bằng cách sử dụng bộ chuyển đổi nhà cung cấp Spring JPA

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

Ngay cả với thuộc tính showSql được đặt thành false, Hibernate giữ in SQL.

Tôi đã thử tạo tệp hibernate.properties trong đường dẫn lớp của mình bằng "hibernate.show_sql = false", nhưng nó cũng không được chọn.

+0

Tôi cũng đã cố gắng thiết lập một hệ thống tài sản: ngủ đông .show_sql = false. Vẫn không có niềm vui. Nó nhấn mạnh vào việc phát tán các câu lệnh SQL. – Mojo

+0

Cách chỉ định ? – skaffman

+0

Tôi khá chắc chắn rằng Hibernate không làm điều này theo mặc định, vì vậy tôi nghi ngờ rằng một nơi khác trong môi trường của bạn, bạn có một cái gì đó đã bật showSql trên, và điều này được ưu tiên hơn nỗ lực của bạn để tắt nó đi. – skaffman

Trả lời

18

Hãy thử thiết lập nó trong persistance.xml

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

Hóa ra là thư viện "nền tảng" của tôi bao gồm một tệp persistence.xml để bật show_sql, và không bị ghi đè vào thời gian chạy hoặc thời gian nối dây mùa xuân – Mojo

+0

Đồng thời tìm kiếm '@ DataJpaTest (showSql = true) 'chú thích trên một lớp" chính ", đó là một cái gì đó trong Spring Boot mặc dù: [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

Theo như tôi biết, Hibernate cũng sẽ đăng nhập câu lệnh SQL nếu đăng nhập cho org.hibernate.SQL xảy ra tại DEBUG hoặc ALL mức, vì vậy bạn có thể thử vô hiệu hoá đó (ví dụ với log4j.logger.org.hibernate.SQL=info khi sử dụng Log4J).

+0

Cảm ơn, rất tiếc là tôi đã ghi nhật ký org.hibernate.SQL được đặt thành ERROR trong log4j. :( – Mojo

3

Nếu bạn đang sử dụng lò xo chắc chắn rằng bạn không có các thiết lập tài sản showSql true

Tôi đã làm điều này bản thân mình

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

điều này cũng sẽ hoạt động

1

thêm video này vào log4j.properties bạn

log4j.logger.org.hibernate = WARN 
0

này đã làm việc cho tôi:

spring.jpa.show-sql=false 
+0

Chỉnh sửa: Thêm thông tin sau vào ứng dụng của bạn.properties: 'logging.level. org.hibernate.SQL = OFF' – dicho

+1

Nếu bạn có một chỉnh sửa, hãy chỉnh sửa bài viết của bạn, đừng chỉ ném nó vào như một lời bình luận – CubeJockey

0

Dưới đây là ba cách (họ có thể khác) để hiển thị hoặc ẩn ngủ đông truy vấn sql:

  1. Trong cấu hình trình ghi nhật ký (mức DEBUG cho đăng nhập):

    <logger name="org.hibernate.SQL" level="DEBUG" /> 
    
  2. Trong mùa xuân cấu hình (ví dụ trong 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; 
    } 
    
  3. Trong persistence.xml

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

Dường như cấu hình logger là độc lập từ cấu hình bền bỉ. Đối với cấu hình persistence nó xuất hiện rằng spring ghi đè persistence.xml (tôi đã thử nghiệm nó với một persistence.xml được tải bởi spring, nếu đây không phải là trường hợp tôi không biết hành vi này sẽ là gì).

Một sự khác biệt giữa hai cấu hình là kết quả khai thác gỗ, với logback nó sẽ giống như thế này:

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

Với cấu hình bền bỉ:

Hibernate: alter table ...
+0

Thực ra câu hỏi là về cách ** dừng ** ghi nhật ký SQL. – naXa

Các vấn đề liên quan