异常一:
java.lang.ExceptionInInitializerError
atcom.hibernate.service.UserServiceImpl.<init>(UserServiceImpl.java:11)
atcom.hibernate.junit.UserTest.<init>(UserTest.java:12)
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:513)
atorg.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:202)
atorg.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:251)
atorg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
atorg.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:248)
atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
atorg.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
atorg.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
atorg.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
atorg.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
atorg.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
atorg.junit.runners.ParentRunner.run(ParentRunner.java:236)
atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.hibernate.HibernateException:Missing column: abc in hibernate.user
atorg.hibernate.mapping.Table.validateColumns(Table.java:276)
atorg.hibernate.cfg.Configuration.validateSchema(Configuration.java:1343)
atorg.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
atorg.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:378)
atorg.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
atcom.hibernate.dao.UserDaoImpl.<clinit>(UserDaoImpl.java:23)
...24 more
异常产生原因:
用validate验证,对于已存在的表,又加属性及与之对应的set和get方法,并在映射文件中声明了,但由于与原来的表结构相比发生了变化,所有抛异常
异常二:
java.lang.ExceptionInInitializerError
atcom.hibernate.service.UserServiceImpl.<init>(UserServiceImpl.java:11)
atcom.hibernate.junit.UserTest.<init>(UserTest.java:12)
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:513)
atorg.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:202)
atorg.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:251)
atorg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
atorg.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:248)
atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
atorg.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
atorg.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
atorg.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
atorg.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
atorg.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
atorg.junit.runners.ParentRunner.run(ParentRunner.java:236)
atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by:org.hibernate.HibernateException: Unable to instantiate default tuplizer
[org.hibernate.tuple.entity.PojoEntityTuplizer]
atorg.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:108)
atorg.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:133)
atorg.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:80)
atorg.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:322)
atorg.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:485)
atorg.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:133)
atorg.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84)
atorg.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:286)
atorg.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
atcom.hibernate.dao.UserDaoImpl.<clinit>(UserDaoImpl.java:23)
...24 more
Caused by:java.lang.reflect.InvocationTargetException
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:513)
atorg.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:105)
...33 more
Caused by:org.hibernate.PropertyNotFoundException: Could not find a getter for birthdayin class
com.hibernate.domain.User
atorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:326)
atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:320)
atorg.hibernate.mapping.Property.getGetter(Property.java:304)
atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:297)
atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:155)
atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:77)
...38 more
异常产生原因:
在User.java中定义了属性privateDate birthday;
在User.hbm.xml中声明了birthday:<propertyname="birthday"/>
但是在User.java中确没有写与birthday对应的set和get方法
异常三:
Exception in thread "main"java.lang.ExceptionInInitializerError
atcom.hbsi.test.ManyToMany.add(ManyToMany.java:31)
atcom.hbsi.test.ManyToMany.main(ManyToMany.java:21)
Caused by: org.hibernate.MappingException:An association from the table teacher_student refers to an unmapped class:com.hbsi.domain.teacher
atorg.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1824)
atorg.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1756)
atorg.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1423)
atorg.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856)
atcom.hbsi.hibernate.utils.HibernateUtil.<clinit>(HibernateUtil.java:19)
...2 more
此错误产生的原因是在Student.hbm.xml中
<setname="teachers" table="teacher_student">
<keycolumn="student_id"></key>
<many-to-manyclass="Teacher" column="teacher_id"/>
</set>
中将class="Teacher"中的Teacher写成了teacher,大小写的问题
除了这三个小异常以外,由于不认真而产生的异常还可能有很多,比如今天上午我自认为配置文件和映射文件中没有错误,但就是初始化的时候异常,看了半天才知道,原来是映射文件中在配置属性时,因为删了一个