疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Hibernate一些异常解决方案


 

[java] view plaincopy
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] view plaincopy
The database returned no natively generated identity value  
映射部分内容如下:
[java] view plaincopy
<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] view plaincopy
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] view plaincopy
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