初学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 ,