您的位置:首页 > 其它

SSH整合异常

2015-04-09 13:20 549 查看
自己最近因为公司项目的需要,有重拾SSH 此次是以注解的形式进行开发的 因此整合后发现一些问题 特此在这里记录下来 方便日后查阅

SSH注解整合 异常 java.lang.NoSuchFieldError: INSTANCE

Caused by: java.lang.NoSuchFieldError: INSTANCE

at org.hibernate.type.BasicTypeRegistry.<init>(BasicTypeRegistry.java:94)

at org.hibernate.type.TypeResolver.<init>(TypeResolver.java:59)

at org.hibernate.cfg.Configuration.<init>(Configuration.java:250)

at org.hibernate.cfg.Configuration.<init>(Configuration.java:302)

at org.hibernate.cfg.AnnotationConfiguration.<init>(AnnotationConfiguration.java:108)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)

... 42 more

困扰了好久的问题终于解决了,出现这种情况一般是有重复的jar包在里面。所以才导致了这个异常

具体的包 : hibernate-annotations.jar 多了这个jar包 因为在hibernate3.jar 中已经存在了 所以直接将他删掉即可

Caused by: java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector

at org.hibernate.cfg.Configuration.createReflectionManager(Configuration.java:2989)

at org.hibernate.cfg.Configuration.createReflectionManager(Configuration.java:2984)

at org.hibernate.cfg.Configuration.reset(Configuration.java:307)

at org.hibernate.cfg.Configuration.<init>(Configuration.java:298)

at org.hibernate.cfg.Configuration.<init>(Configuration.java:302)

at org.hibernate.cfg.AnnotationConfiguration.<init>(AnnotationConfiguration.java:75)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)

... 42 more

错误原因 使用了 hibernate-commons-annotations.jar 将其删掉即可

You have to use hibernate-commons-annotations version 3.2.0.Final, because 3.3.0.ga is an invalid version as stated in the README.TXT in the maven repository folder:

"Version '3.3.0.ga' was a mistake during the release process, please disregard.

There is not such version 3.3.0.ga."

Version 3.2.0.Final includes the missing MetadataProvider

解释 解释链接地址

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [com/zhin/ycb/spring/application-spring.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sessionFactory' is required

原因就是transactionManager要注入 sessionFactory 即可

Caused by: java.lang.NoSuchFieldError: INSTANCE

at org.hibernate.type.BasicTypeRegistry.<init>(BasicTypeRegistry.java:94)

at org.hibernate.type.TypeResolver.<init>(TypeResolver.java:59)

at org.hibernate.cfg.Configuration.<init>(Configuration.java:250)

at org.hibernate.cfg.Configuration.<init>(Configuration.java:302)

at org.hibernate.cfg.AnnotationConfiguration.<init>(AnnotationConfiguration.java:108)

at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:107)

at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:130)

at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:288)

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)

... 36 more

原因是jar包冲突了 需要将不必要的jar包删掉 冲突的jar hibernate-annotations.jar和hibernate-commons-annotations.jar 因为我用的是hibernate3.6版本的所以呢 在hibernate3.jar中已经包含了这两个jar 因此只要将它们删除即可

大家都知道框架的异常都是从最底下开始看起,

异常信息:Caused by:org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: cn.com.agricom.entity.SysPhotograph.sysBeforemovevillage in cn.com.agricom.entity.SysBeforemovevillage.sysPhotographs

上面是错误的关键部分

错误原因:在one-to-many注解配置: @OneToMany (mappedBy = "sysBeforemovevillage"),mappedBy指向的是要关联的属性,而不是要关联的类,

如果这样配置,hibernate则会找cn.com.agricom.entity.SysPhotograph类下面的sysBeforemovevillage属性。但实际上没有这个属性,就会报上面的异常

方法:指定到实际关联的属性:即:@OneToMany (mappedBy = "sysBeforemovevillage") 这个异常时因为我只想做单向的关联所以才造成的,我删除了Many的一方注解 而忘记了删除One一方的外键属性所以造成这个异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: