毕竟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及以下版本可以解决,但具体原因还不知道
感觉应该是这个原因了,不过暂时不影响使用就先不管了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。