2015从头开始配置Hibernate-------Hibernate异常集锦

Eclipse不像是MyEclipse,它的Hibernate的使用需要进行从头配置。配置的基本方法就是把相应的jar包复制到WEB-INF/lib目录下。这些jar包,我是从

http://ncu.dl.sourceforge.net/project/hibernate/hibernate3/3.6.10.Final/hibernate-distribution-3.6.10.Final-dist.zip

这个地址下载的。

在“hibernate-distribution-3.6.10.Final\lib\required”这个目录下找到

antlr-2.7.6.jar、

commons-collections-3.1.jar、

dom4j-1.6.1.jar、

javassist-3.12.0.GA.jar、

jta-1.1.jar、

slf4j-api-1.6.1.jar

这六个jar包,再加上第一层目录下的hibernate3.jar这个jar包,还有,我连接的数据库是MySQL,还需要一个JDBC的驱动包我就加了mysql-connector-java-5.1.31-bin.jar这个包,这样这八个包就基本满足了书本上的要求了。于是,就开始试运行,结果很自然的就出现了报错,

(--------Hibernate第一个异常----缺少javax.persistence.jar------)

错误如下:

我们先不看上面的“slf4j...failed......”先看下面的关键异常:就是说:javax.persistence.EntityListeners这个类找不到。于是把这个错误放在网上搜索,结果网上说这个包在Java_ee_sdk这个库中。于是就到:

http://www.oracle.com/technetwork/java/javaee/downloads/index.html”

这个页面上下载了java_ee_sdk-7u1.zip这个文件,解压后搜索persistence.jar,果然找到了javax.persistence.jar。然后复制到lib,运行...... 这时出现了另外一个异常:

(--------Hibernate第二个异常----<hibernate-mapping>标签中,忘记配置包名属性------)

出现了这个异常时,首先我注意的是它的类型:“ org.hibernate.InvalidMappingException”,乍一看去,感觉陌生,似又熟悉。在网上一查,果不其然,是映射文件的配置问题。    再看下面的原因提示:说的是Customer这个类没有找到。我首先想的是,是不是我的Customer类的名字的问题。检查之后,命名没有一点问题。然后我就仔细的在我配置的映射文件中去找错误,还是找不到引起这个错误的原因。这时我就仔细的回想,我看书所学到的关于Hibernate的一切,觉得基本的元素都已经具备。

于是再去从<hibernate-mapping>这个标签开始看起,猛然发现这里面还需要“包”的配置。于是立刻在这个标签里面添加了属性:package="pojos" 。立刻,上面的这个错误就改变了,出现了下面的异常...

(--------Hibernate第三个异常----实体类中getter或者setter方法的命名出错------)

这应当算是一个经典的异常了:Exception in thread "main" org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]。其中“instantiate”,这个单词的意思是“v.实例化”。意思是,不能实例化默认Tuplizer。TupliZer这个词网上也找不到翻译。不过没关系,继续往下看,找到了这句话:Could not find a getter for password in class pojos.Customer。于是想,问题大概是出在password这个属性上了。于是再去看映射文件,结果怎么也找不到错误。于是就只好去看实体类了。最后问题出在了我的password的getter和setter方法上了。是把password写成了paassword了,多写了一个a。至于为什么是这样,这里就不讨论了。发现了错误,就去改正,改正了后,就出现了以下的另外一个异常...

(--------Hibernate第四个异常----数据库没有设置主键的自动增长------)

这里这个异常是:could not insert。就是无法执行插入操作。继续往下看,看导致这个异常的原因...

这里说的原因是:Caused by: java.sql.SQLException: Field ‘ID‘ doesn‘t have a default value。

分析异常的字面意思:ID字段没有默认值。经过网上的资料查找发现,问题出在了主键上。

有这样一个标签:

<id name="id" column="ID">

<generator class="native"/>

</id>

其中<generator>设置了一个值为native的class属性。意思是:智能根据所连接数据库设置的增长模式,选择一种增长方式来进行插入操作。 于是,就去把主键的自动增长选项勾上。再运行,终于顺利的插入了,我所要插入的数据!

(-------------MySQL数据库显示乱码,是因为Hibernate.cfg.xml中还有一个属性没有配置-----------------------)

这时,我又看到了一个问题,就是我插入到数据库中的汉字全都被“?”代替了。就是出现了乱码现象。

这个问题的解决,这里先给出一个治标不治本的办法。就是在<hibernate.cfg.xml>中添加:

<property name="connection.useUnicode">true</property>

<property name="connection.characterEncoding">UTF-8</property>

现在我们该回过头来看看:异常显示的头三句:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

(--------Hibernate第五个异常----slf4j-simple-1.7.12.jar没有添加------)

slf4j是负责日志的,我们在最开始也已经加入了slf4j-api-1.6.1.jar,但是还缺少一个包,还需要到网上去下载:

http://www.slf4j.org/dist/slf4j-1.7.12.zip”

解压后搜索"simple",就会找到slf4j-simple-1.7.12.jar,把它复制到lib目录下。这样问题就得到了解决。

(--------Hibernate第六个异常-----getcurrentsession的异常-----)

这个异常,在前几步进行中也会出现,只要你没有作相应的配置。这个配置是这样的:在<hibernate.cfg.xml>中添加:<property name="current_session_context_class">thread</property>

这样就会解决。

昨天调试了一个晚上的Hibernate,今天用了一下午的时间把这些成果给写出来。为了以后有的查。

时间: 2024-10-03 14:03:37

2015从头开始配置Hibernate-------Hibernate异常集锦的相关文章

【hibernate】Hibernate面试问题集锦: 概述

Q.怎么配置Hibernate? A.Configuration类使用配置hibernate.cfg.xml(或者hibernate.properties)以及映射文件*.hbm.xml来创建(例如,配置和引导hibernate)SessionFactory,然后SessionFactory创建Session的实例.Session的实例是持久层服务对外提供的主要接口. hibernate.cfg.xml(或者你也可以使用hibernate.properties):这两个文件都是用来配置hiber

Hibernate——hibernate的配置测试

Hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 语言特点 将对数据库的操作转换为对Java对象的操作,从而简化开发.通过修改一个"持久化"对象的属性从而修改数据库表中对应的记录数据. 提供线程和进程两个级别的缓存提升应用程序性能. 有丰富的映射方

Hibernate 常见异常

Hibernate 常见异常net.sf.hibernate.MappingException        当出现net.sf.hibernate.MappingException: Error reading resource:…异常时一般是因为映射文件出现错误. 当出现net.sf.hibernate.MappingException: Resource: … not found是因为XML配置文件没找到所致,有可能是放置目录不正确,或者没将其加入hibernate.cfg.xml中. 2

最近走过的坑 :slf4j 多个实现 hibernate 类型转换异常 bean依赖问题

最近走过的坑 slf4j 多个实现 主要是maven依赖中存在多个slf4j的实现类,在引入的依赖中排除对应的依赖就可以 <dependency> <groupId>xxxxxx</groupId> <artifactId>xxxxxx</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>org.

org.hibernate.NonUniqueObjectException 异常

在做hibernate修改和删除的时候,可能会遇到 org.hibernate.NonUniqueObjectException 异常,a different object with the same identifier value was already associated with the session 这个问题的出现 主要是当前状态下有一个具有相同值的不同对象已经与和 session 相关联了. 就好比: Session session = HibernateSessionFacto

Spring MVC注解配置结合Hibernate的入门教程及其代码实例

原文:Spring MVC注解配置结合Hibernate的入门教程及其代码实例 源代码下载地址:http://www.zuidaima.com/share/1787210045197312.htm 1.概述 本文旨在搭建Spring MVC+Hibernate开发框架,通过一个简单的demo讲解Spring MVC的相关配置文件,以及通过注解方式实现简单功能. 开发框架:Spring+Spring MVC+Hibernate(Spring所用的版本为3.0.5). 数据库:MySQL(数据库名称

关于配置正确hibernate仍然无法创建表的解决方法

 当时全部配置都正确后,而且以前可以正确创建表,为什么突然新写了一个类就不能自动创建了呢.. 其实很简单.. 99%的原因是类的属性名是sql的关键字,不能利用ddl来创建表,还有1%的的原因是没有在cfg中添加 对应的hbm文件.. 嗯  切记... 关于配置正确hibernate仍然无法创建表的解决方法

spring的applicationContext.xml配置SessionFactory抛异常

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  <property name="dataSource" ref="dataSource"></property>  <property name="hibernateProperties&

Hibernate -- hibernate.cfg.xml 核心配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibe