root cause
java.lang.ExceptionInInitializerError
cn.tofishes.util.HibernateUtil.<clinit>(HibernateUtil.java:17)
cn.tofishes.servlet.AddEvent.doGet(AddEvent.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
cn.tofishes.util.HibernateUtil.<clinit>(HibernateUtil.java:12)
cn.tofishes.servlet.AddEvent.doGet(AddEvent.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
出现以上异常,其实不能太怨我,配置文件啥的都没错,尤其是看到Hibernate Dialect,就以为dialect没配置或配置错了,其实不是的,错就错在官方的文档描述上,说下版本:
hibernate 3.2 + hibernate-annotations-3.4.0.GA
按照hibernate-annotations-3.4.0.GA发布包中的doc\reference\zh_cn中的文档(后注:完了去看了看英文文档,晕,是正确的,原来是翻译的错误... ...):
static {
try {
/* 就是这句了,出问题 */
sessionFactory = new AnnotationConfiguration().buildSessionFactory();
} catch (Throwable ex) {
// Log exception!
throw new ExceptionInInitializerError(ex);
}
}
只有改成sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();我这里才成功了。
另外遇到:
Log4j 错误: java.lang.NoSuchFieldError: TRACE
原因是Log4j的版本不兼容导致,换成hibernate-annotations-3.4.0.GA发布包中的log4j就好了。
org.hibernate.MappingException: Unknown entity
原因是import org.hibernate.annotations.Entity;这个根据Eclipse自动导入的类是不对的,改成import javax.persistence.Entity;(位于ejb3-persistence.jar中)
本文解析了Hibernate在初始化过程中遇到的HibernateDialect未明确设置的问题,并给出了正确的解决方案。
3264

被折叠的 条评论
为什么被折叠?



