[java] createClob () 메서드로 인해 컨텍스트 LOB 생성을 비활성화하면 오류가 발생했습니다.

Oracle 10g와 함께 Hibernate 3.5.6을 사용하고 있습니다. 초기화 중에 아래 예외가 표시되지만 응용 프로그램 자체가 제대로 작동합니다. 이 예외의 원인은 무엇입니까? 어떻게 수정할 수 있습니까?

예외
상황 별 LOB 생성 비활성화 createClob()메서드로 인해 오류가 발생했습니다.java.lang.reflect.InvocationTargetException

정보
Oracle 버전 : Oracle Database 10g Enterprise Edition 릴리스 10.2.0.4.0 JDBC 드라이버 : Oracle JDBC 드라이버, 버전 : 11.1.0.7.0



답변

아래에 속성을 추가하여이 경고를 비활성화하십시오.

Spring 애플리케이션의 경우 :

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false

일반 JPA :

hibernate.temp.use_jdbc_metadata_defaults=false


답변

아시다시피이 예외는 실제 문제가 아닙니다. Hibernate가 데이터베이스에서 일부 메타 정보를 검색하려고 할 때 부팅 중에 발생합니다. 이것이 귀찮다면 비활성화 할 수 있습니다.

hibernate.temp.use_jdbc_metadata_defaults false


답변

소스 의 주석을 살펴보면 :

기본적으로 여기서는 JDBC 4에 추가 된 LOB 생성을 위해 java.sql.Connection 메소드를 호출 할 수 있는지 확인하고 있습니다. java.sql.Connection이 이러한 메소드를 선언하는지 여부뿐만 아니라 실제 java.sql.Connection이 있는지 여부도 확인합니다. 인스턴스가이를 구현합니다 (예 : 단순히 예외를 던지지 않고 호출 될 수 있음).

그래서 새로운 JDBC 4 메소드를 사용할 수 있는지 확인하려고합니다. 드라이버가 새로운 LOB 생성 방법을 지원하지 않을 수 있습니다.


답변

예외를 숨기려면 :

Hibernate 5.2 (및 Spring Boot 2.0)의 경우 다른 사람들이 지적한 use_jdbc_metadata_defaults 속성을 사용할 수 있습니다 .

# Meant to hide HHH000424: Disabling contextual LOB creation as createClob() method threw error
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults: false

또는 위의 설정에서 부작용을 일으키지 않으려면 (일부 Oracle 부작용에 대해 경고하는 주석이 있습니다. 유효한지 여부는 모르겠습니다) 다음과 같이 예외 로깅을 비활성화 할 수 있습니다. :

logging:
   level:
      # Hides HHH000424: Disabling contextual LOB creation as createClob() method threw error
      org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl: WARN


답변

예외를 제거하려면

INFO - HHH000424: Disabling contextual LOB creation as createClob() method threw error :java.lang.reflect.InvocationTargetException

에서 hibernate.cfg.xml파일 속성을 아래에 추가

<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>


답변

Hibernate 4.3.x / 5.0.x를 사용하기 위해 이것을 업데이트하십시오-이 속성을 true로 설정할 수 있습니다 :

<prop key="hibernate.jdbc.lob.non_contextual_creation">true</prop>

해당 오류 메시지를 제거합니다. 동일한 효과이지만 “예외 발생”세부 사항이 없습니다. 자세한 내용은 LobCreatorBuilder 소스를 참조하세요.


답변

application.properties에 아래 줄을 추가하십시오.

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults: false