当前位置:编程学习 > JAVA >>

初学Hibernate一些异常解决方案

[java]
java.lang.ExceptionInInitializerError 
    at org.hibernate.cfg.Configuration.reset(Configuration.java:168) 
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:187) 
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:191) 
    at com.bjsxt.hibernate.model.StudentTest.test1(StudentTest.java:15) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 
Caused by: java.lang.NullPointerException 
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:144) 
    at org.hibernate.cfg.Environment.<clinit>(Environment.java:515) 
    ... 27 more 

java.lang.ExceptionInInitializerError
 at org.hibernate.cfg.Configuration.reset(Configuration.java:168)
 at org.hibernate.cfg.Configuration.<init>(Configuration.java:187)
 at org.hibernate.cfg.Configuration.<init>(Configuration.java:191)
 at com.bjsxt.hibernate.model.StudentTest.test1(StudentTest.java:15)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Caused by: java.lang.NullPointerException
 at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:144)
 at org.hibernate.cfg.Environment.<clinit>(Environment.java:515)
 ... 27 more静态初始化程序中发生意外异常的信号。抛出 ExceptionInInitializerError 表明在计算静态初始值或静态变量的初始值期间发生异常。结果造成空指针异常。主要是hibernate.cfg.xml和xxx.hbm.xml配置出现问题。


[java]
The database returned no natively generated identity value 

The database returned no natively generated identity value映射部分内容如下:


[java]
<class name="Student"  lazy="true"> 
        <comment>Users may bid for or sell auction items.</comment> 
    <id name="id"> 
            <generator class="identity"></generator> 
        </id> 
        <property name="name"></property> 
        <property name="age"></property>                
    </class> 

<class name="Student"  lazy="true">
  <comment>Users may bid for or sell auction items.</comment>
 <id name="id">
   <generator class="identity"></generator>
  </id>
  <property name="name"></property>
  <property name="age"></property>        
 </class>在指定主键生成策略的时候、配置了<generator class="identity"/> 、这是提供自动增长、为数据表中的主键自动增长、但是如果数据库没有定义id列为自动增长的话、就会出现The database returned no natively generated identity value错误、所以要在数据库中手动定义id列自动增长


[java]
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). 
log4j:WARN Please initialize the log4j system properly. 

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。我们没有配置log4j文件所致。

解决方法:

将log4j.properties放到classpath的文件夹里。classpath文件夹的位置可以在eclipse自动生成的.classpath文件中找到,一般是你的src目录或者是最顶级的project对应的文件夹根目录(我说的清楚吗?呵呵)。将这个文件放好之后问题就解决了。
log4j.properties文件的内容中写入下面的信息即可,保存成log4j.properties的文件。


[java]
log4j.rootLogger=WARN, Console 
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n 
log4j.logger.com.genuitec.eclipse.sqlexplorer=DEBUG 
log4j.logger.org.apache=WARN 
log4j.logger.net.sf.hibernate=WARN 

log4j.rootLogger=WARN, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
log4j.logger.com.genuitec.eclipse.sqlexplorer=DEBUG
log4j.logger.org.apache=WARN
log4j.logger.net.sf.hibernate=WARN

 

 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,