我有一个正在运行的项目。我添加了将近200个实体,现在出现“创建名称为’entityManagerFactory’的bean时出错”。我没有故意改变其他任何东西。
我正在使用Java风格的配置。
我得到以下内容:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/cru/cloud/management/config/DataConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1554) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:752) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4749) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5175) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:581) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1686) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1225) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.access$600(EntityManagerFactoryBuilderImpl.java:119) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:853) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550) ... 25 more Caused by: org.hibernate.MappingException: component property not found: id at org.hibernate.mapping.Component.getProperty(Component.java:293) at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2651) at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2524) at org.hibernate.cfg.AnnotationBinder.bindComponent(AnnotationBinder.java:2473) at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2198) at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:963) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:796) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3788) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3742) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) ... 33 more
我的pom.xml是:
<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework.security</groupId> <artifactId>spring-security-samples-hellomvc-jc</artifactId> <version>3.2.5.RELEASE</version> <packaging>war</packaging> <name>spring-security-samples-hellomvc-jc</name> <description>spring-security-samples-hellomvc-jc</description> <url>http://spring.io/spring-security</url> <properties> <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot> <!-- spring.version>3.2.11.RELEASE</spring.version --> <!-- spring.security.version>3.2.5.RELEASE</spring.security.version --> <!-- hibernate.entity.manager.version>3.6.10.Final</hibernate.entity.manager.version --> <!-- hibernate.jpa.api.version>1.0.0.Final</hibernate.jpa.api.version --> <!-- spring.data.jpa.version>1.3.4.RELEASE</spring.data.jpa.version --> <!-- slf4j.version>1.7.5</slf4j.version --> <spring.version>4.0.7.RELEASE</spring.version> <spring.security.version>3.2.5.RELEASE</spring.security.version> <hibernate.entity.manager.version>4.3.6.Final</hibernate.entity.manager.version> <hibernate.jpa.api.version>1.0.1.Final</hibernate.jpa.api.version> <spring.data.jpa.version>1.7.0.RELEASE</spring.data.jpa.version> <slf4j.version>1.7.7</slf4j.version> </properties> <organization> <name>spring.io</name> <url>http://spring.io/</url> </organization> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <id>rwinch</id> <name>Rob Winch</name> <email>rwinch@gopivotal.com</email> </developer> </developers> <scm> <connection>scm:git:git://github.com/spring-projects/spring-security</connection> <developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection> <url>https://github.com/spring-projects/spring-security</url> </scm>
我的DataConfiguration包含:
@Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setDatabase(Database.H2); vendorAdapter.setGenerateDdl(true); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("org.cru.cloud.management.core.repository", "org.cru.repository"); factory.setDataSource(dataSource()); return factory; }
我有一个@Embedded实体,需要@OneToOne在其参考上添加注释。
@Embedded
@OneToOne