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中的文档(后注:完了去看了看英文文档,晕,是正确的,原来是翻译的错误... ...):
文档中 写道
我们推荐在一个包装器(wrapper)类HibernateUtil 的静态初始化代码块中启动Hibernate。或许你在Hibernate文档的其他很多地方看到过这个类, 但是要在你的项目中使用注解,还需要对这个辅助(helper)类进行扩展。扩展如下:
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 Validator会抛出异常并提供详细的错误信息。通过查看源码,开发者可以理解这些错误信息的生成机制,以便更有效地调试和修复问题。 总之,这个压缩包提供了深入学习和研究Hibernate ...
解决方法是使用 HQL、Criteria 或 Hibernate Annotation 中的 lazy、batchSize 和 join fetch 等方法来优化查询。 例如,使用 HQL: ```java String hql = "from News n left join fetch n.category c"; Query ...
### 配置Hibernate 3.6.6.Final时出现的问题及解决办法 #### 问题背景 在配置和使用Hibernate 3.6.6.Final的过程中,开发者可能会遇到一些问题,尤其是在采用注解(Annotation)的方式进行配置时。本文将详细介绍在...
5. 故障排查:可能遇到的问题及解决办法,如类加载冲突、空指针异常等。 文件“lib3”可能是项目所需的库文件夹,包含了整合这些框架所需的各种jar包,如struts2、spring、hibernate以及相关的依赖库。这些库文件...
Spring提供了强大的依赖注入(DI)和面向切面编程(AOP),而Hibernate则是一个优秀的对象关系映射(ORM)解决方案,使得开发者可以方便地操作数据库。当我们需要在应用程序中进行事务管理时,Spring提供了一种声明...
在本项目中,这些框架的集成使用了注解(Annotation)来简化配置,使得代码更加简洁和易于维护。 Struts1.3 是一个基于 Model-View-Controller (MVC) 模式的开源框架,用于构建动态 Web 应用。它提供了一种结构化的...
标题"spring+hibernate"指的是将这两个框架结合使用,形成一个强大的Java开发解决方案。Spring通过其Transaction Management(事务管理)模块与Hibernate集成,能够提供声明式事务处理,这大大简化了事务控制的复杂...
在Hibernate中,实体类通常使用注解(@Entity)进行标记,属性则通过(@Id, @GeneratedValue, @Column等)来定义其在数据库中的映射。Hibernate的Enhancer类可以动态增强实体类,使其具备懒加载、代理等功能。在源码中,...
Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,它有效地解决了Java应用程序与数据库之间的数据交互问题,使得开发者可以更专注于业务逻辑,而不是繁琐的数据操作。 1. **O/R Mapping**:对象关系映射...
Hibernate提供了基于Annotation的事务管理,可以在实体类的方法上使用@Transactional注解,让Spring容器自动管理事务的开始、提交和回滚。同时,也可以通过Session的beginTransaction()、commit()和rollback()方法...
- **实体映射**:使用Hibernate Annotation配置实体类,指定字段与数据库列的对应关系。 - **初始化SessionFactory**:通过Configuration类加载配置,创建SessionFactory实例。 - **使用Session**:创建Session,...
Struts处理MVC模式中的Controller部分,Spring提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,而Hibernate则是持久层的优秀解决方案,简化了数据库操作。 在构建一个整合Struts、Hibernate和Spring的经典...
12. **实战案例**:通过实际的项目案例,演示如何在应用中集成Hibernate,实现数据的增删改查,以及解决可能出现的问题。 通过《Hibernate开发指南》的学习,开发者不仅能掌握Hibernate的基本用法,还能理解其设计...
使用`<tx:annotation-driven>`标签开启基于注解的声明式事务管理。 3. 实体类和DAO:编写实体类,遵循Hibernate的规则,例如使用@Id标识主键,使用@ManyToOne、@OneToMany等标注关联关系。接着,创建DAO(Data ...
在Java开发领域,Spring框架和Hibernate持久化框架是两个非常重要的组件,它们各自解决不同的问题,但又可以完美结合,为开发者提供强大的企业级应用支持。Spring以其灵活的依赖注入、面向切面编程以及丰富的模块,...
2. **使用 HibernateTemplate**: Spring 为 Hibernate 提供了一个抽象层,即 HibernateTemplate 类,它封装了 Session 的常用操作,如保存、更新、删除和查询等,同时处理了事务管理和异常转换。在 Spring 容器中...
4. 整合Struts和Spring:使用Spring的Struts插件或基于Annotation的配置,将Action交给Spring管理。 5. 整合Spring和Hibernate:通过SessionFactory Bean,配置数据源和Hibernate属性,使Spring能够管理...
在Java编程中,异常处理是不可或缺的一部分,它帮助开发者识别并修复程序运行时可能出现的问题...同时,良好的编程习惯,如使用try-catch块捕获异常、编写单元测试,以及定期更新依赖库,都能有效减少出现异常的概率。
本文将详细解析三个主要问题及其解决方案,包括JPA冲突、validation问题和annotation扫描异常。 首先,针对JPA引起的问题,TongWeb自带了JPA实现,但这与很多应用中使用的Hibernate JPA版本可能存在冲突。解决方法...