在学习Hibernate框架的关系映射时,遇到了一个问题:
INFO: HHH000422: Disabling contextual LOB creation as connection was null
在网上找了一下原因,以下是网上找的原文:
毕竟hibernate是有名的ORM框架,所以还是学着用一用,结果还是出了不少问题,文档啊文档,你就不能及时更新么。
首先在创建一个全局的SessionFactory中,文档中的示例代码是这样的,但这个是不能成功运行的,需要在try块中稍微改一下
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
new Configuration().configure().buildSessionFactory(
new StandardServiceRegistryBuilder().build() );
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Configuration config = new Configuration();
config.configure(“hibernate.cfg.xml”); // 这里还是指定一下要不然会先去找hibernate.properties
return config.buildSessionFactory(new StandardServiceRegistryBuilder()
.applySettings(config.getProperties()).build()); // 主要多加了一个applySettings
然后在启动的时候还会抛一个错
九月 17, 2014 9:29:52 下午 org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
在下面这个网站可以看这部分的源码
http://grepcode.com/file/repo1.maven.org/maven2/org.hibernate/hibernate-core/4.3.6.Final/org/hibernate/engine/jdbc/internal/LobCreatorBuilder.java#LobCreatorBuilder.useContextualLobCreation%28java.util.Map%2Cjava.sql.Connection%29
其中的注释是这样说的
Basically here we are simply checking whether we can call the java.sql.Connection methods for LOB creation added in JDBC 4. We not only check whether the java.sql.Connection declares these methods, but also whether the actual java.sql.Connection instance implements them (i.e. can be called without simply throwing an exception).
也就是说,这个错误应该是hibernate检测到mysql-connector-java(5.1.31)没有实现这个接口。
也看到有人说http://my.oschina.net/huangchp/blog/205461
使用mysql-connector-java 5.1.13及以下版本可以解决,但具体原因还不知道
感觉应该是这个原因了,不过暂时不影响使用就先不管了
这里是:原文链接