【发布时间】:2013-08-02 20:18:40
【问题描述】:
希望有人可以帮助我解决这个问题,因为我找到的所有答案似乎都不适合我。
在我的 myProj webapp 下,我有以下内容
./WEB=INF/lib/myproj-user.jar containing this class
@Entity
@Table(name = "user_details")
@Data
@EqualsAndHashCode(callSuper=false)
public class UserDetails extends CommonObject {
...
}
.
./WEB=INF/lib/myproj-common.jar containing this class
@MappedSuperclass
public abstract class CommonObject implements Serializable {
private static final long serialVersionUID = -980608025624315940L;
@Getter @Setter
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
...
}
我的 application-context.xml 有这个 (application-context.xml 有称为 hibernate-context 和 model-context.xml 的子 XML,但这些一直都很好)
<bean id="commonAuto" class="com.myproj.common.model.CommonObject"/>
<bean id="userDetails" class="com.myproj.user.model.UserDetails"/>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.myproj.common.model.CommonObject</value>
<value>com.myproj.user.model.UserDetails</value>
但在启动时,我的日志中出现以下错误
严重:向侦听器发送上下文初始化事件的异常 类的实例 org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException:错误 创建名为“userService”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:com.myproj.user.dao.UserDao com.myproj.user.servces.impl.UserServiceImpl.userDao;嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建名为“userAccountDao”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 org.hibernate.SessionFactory com.myproj.user.dao.impl.UserDaoImpl.sessionFactory;嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/context/hibernate-context.xml]: init 的调用 方法失败;嵌套异常是 org.hibernate.AnnotationException: 没有为实体指定标识符:com.myproj.user.model.UserDetails 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1120) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 在 org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4323) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4780) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:785) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:763) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:557) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:987) 在 org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778) 在 org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:540) 在 org.apache.catalina.startup.HostConfig.start(HostConfig.java:1390) 在 org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:355) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 在 org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:313) 在 org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:293) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:996) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:771) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:988) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:427) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:649) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:585) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415) 引起 作者:org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:com.myproj.user.dao.UserDao com.myproj.user.servces.impl.UserServiceImpl.userDao;嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建名为“userAccountDao”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 org.hibernate.SessionFactory com.myproj.user.dao.impl.UserDaoImpl.sessionFactory;嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/context/hibernate-context.xml]:init 的调用 方法失败;嵌套异常是 org.hibernate.AnnotationException: 没有为实体指定标识符:com.myproj.user.model.UserDetails 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514) 在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) ... 45 更多原因: org.springframework.beans.factory.BeanCreationException:错误 创建名为“userAccountDao”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 org.hibernate.SessionFactory com.myproj.user.dao.impl.UserDaoImpl.sessionFactory;嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/context/hibernate-context.xml]:init 的调用 方法失败;嵌套异常是 org.hibernate.AnnotationException: 没有为实体指定标识符:com.myproj.user.model.UserDetails 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1120) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:891) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:834) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:749) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486) ... 47 更多原因: org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 org.hibernate.SessionFactory com.myproj.user.dao.impl.UserDaoImpl.sessionFactory;嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/context/hibernate-context.xml]:init 的调用 方法失败;嵌套异常是 org.hibernate.AnnotationException: 没有为实体指定标识符:com.myproj.user.model.UserDetails 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514) 在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) ... 58 更多原因: org.springframework.beans.factory.BeanCreationException:错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/context/hibernate-context.xml]:init 的调用 方法失败;嵌套异常是 org.hibernate.AnnotationException: 没有为实体指定标识符:com.myproj.user.model.UserDetails 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:891) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:834) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:749) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486) ... 60 更多原因:org.hibernate.AnnotationException:否 为实体指定的标识符:com.myproj.user.model.UserDetails at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:276) 在 org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:224) 在 org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:665) 在 org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3431) 在 org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3385) 在 org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1337) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1727) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778) 在 org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:242) 在 org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:372) 在 org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:357) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) ... 70 更多
【问题讨论】:
-
在您的 id 属性中添加
@Id注释。 -
托德 - 就在我走出房间尖叫的一秒钟!!!!说真的,我到底是怎么错过的! commonObject 类取自我编写的一个旧应用程序。一定是错误地删除了@Id,只是看起来不正确。 :-(
标签: java spring hibernate persistence