禁用上下文LOB创build为createClob()方法抛出错误

我正在使用Oracle 10g的Hibernate 3.5.6。 我在初始化过程中看到下面的exception,但应用程序本身工作正常。 这个exception的原因是什么? 以及如何纠正?

例外
禁用上下文LOB创build为createClob()方法抛出错误: java.lang.reflect.InvocationTargetException

信息
Oracle版本:Oracle数据库10g企业版版本10.2.0.4.0 JDBC驱动程序:Oracle JDBC驱动程序,版本:11.1.0.7.0

正如你注意到的,这个例外不是一个真正的问题。 它在启动过程中发生,当Hibernate尝试从数据库中检索一些元信息时。 如果这让你很烦,你可以禁用它:

 hibernate.temp.use_jdbc_metadata_defaults false 

从源头上看评论:

基本上这里我们只是简单地检查我们是否可以调用在JDBC 4中添加的创buildLOB的java.sql.Connection方法。我们不仅检查java.sql.Connection是否声明这些方法,而且检查实际的java.sql.Connection实例实现它们(即可以调用,而无需简单地抛出exception)。

所以,它试图确定它是否可以使用一些新的JDBC 4方法。 我猜你的驱动可能不支持新的LOB创build方法。

摆脱例外

 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> 

更新JDBC驱动程序到最新版本删除了令人讨厌的错误消息。

你可以在这里下载:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

免费注册是必需的。

通过添加属性来禁用此警告。

对于Spring应用程序:

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

普通JPA:

 hibernate.temp.use_jdbc_metadata_defaults=false 

发生这个问题是因为你没有select合适的JDBC。 只需下载并使用JDBC for Oracle 10g而不是11g。

使用Hibernate 4.3.x / 5.0.x更新到这个 – 你可以设置这个属性为true:

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

摆脱那个错误信息。 同样的效果,但没有“抛出exception”的细节。 有关详细信息,请参阅LobCreatorBuilder源代码。

检查你是否不在VPN上。 我有同样的问题,但实现了我连接到远程的数据库!

如果您使用java.sql。*类,则删除@Temporal注释。