2012-03-02 8 views
1

MVNクリーンは、エラーなしで作品をインストールし、私はtomcat6起動したときに、私は次のエラーを取得する:JavaのHibernateの春AnnotationExceptionマップされていないクラス

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 

ツリー全体が末尾にある:によって発生します。

私はここ一冊とウェブで検索しましたが、私のための解決策は見つかりませんでした。

セットアップ:アプリケーションと配布:

Distribution.java:

@Entity 
@Table(name = "DISTRIBUTION") 
public class Distribution extends xxxEntity { 

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinTable(name = "APP_DISTRIBUTION", joinColumns = { @JoinColumn(name = "distribution_id") }, inverseJoinColumns = { @JoinColumn(name = "app_id") }) 
    private Set<App> apps; 

    } 

App.java:

@Entity 
@Table(name="APP") 
public class App extends xxxEntity { 

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinTable(name = "APP_DISTRIBUTION", joinColumns = { @JoinColumn(name = "app_id") }, inverseJoinColumns = { @JoinColumn(name = "distribution_id") }) 
    private Set<Distribution> distributions; 
私は2つのクラス間Hibernateで多くの関連に多くをしたい

targetEntityでも試しました。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 

<context:annotation-config /> 


<bean id="serverPropertyConfigurer" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>file:${xxx_server_config_location}/xxx-server.properties 
     </value> 
    </property> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
</bean> 

<!-- Definition of the data source --> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${dataSource.driverClass}" /> 
    <property name="url" value="${dataSource.url}" /> 
    <property name="username" value="${dataSource.username}" /> 
    <property name="password" value="${dataSource.password}" /> 
    <property name="initialSize" value="${dataSource.initialSize}" /> 
    <property name="maxActive" value="${dataSource.maxActive}" /> 
    <property name="maxIdle" value="${dataSource.maxIdle}" /> 
    <property name="minIdle" value="${dataSource.minIdle}" /> 
    <property name="validationQuery" value="select 1" /> 
    <property name="testOnBorrow" value="true" /> 
    <property name="testOnReturn" value="false" /> 
    <property name="testWhileIdle" value="false" /> 
</bean> 

<!-- Starts up Hibernate --> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="entityInterceptor"> 
     <bean class="com.xxx.server.util.hibernate.AuditInterceptor" /> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 

      <prop key="hibernate.jdbc.batch_size">${hibernate.batchSize}</prop> 
      <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop> 
      <prop key="hibernate.cache.use_query_cache">false</prop> 
      <!-- 
       use log4j.logger.org.hibernate.SQL=debug in log4j config to show 
       SQL 
      --> 
      <prop key="hibernate.show_sql">false</prop> 

      <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
      <prop key="hiberhibernate.hbm2ddl.export">${hibernate.hbm2ddl.export}</prop> 
      <prop key="hibernate.hbm2ddl.outputfilename">${hibernate.hbm2ddl.outputfilename}</prop> 


     </props> 
    </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.xxx.server.entity.user.AdminUser</value> 
      <value>com.xxx.server.entity.app.App</value> 
      <value>com.xxx.server.entity.app.AppCategory</value>  
      <value>com.xxx.server.entity.app.AppLanguageSpecific</value>  
      <value>com.xxx.server.entity.device.Device</value> 
      <value>com.xxx.server.entity.device.Vendor</value> 
      <value>com.xxx.server.entity.distribution.Distribution</value> 
      <value>com.xxx.server.entity.feedback.UserFeedback</value> 
      <value>com.xxx.server.entity.info.Info</value> 
      <value>com.xxx.server.entity.info.InfoParam</value> 
      <value>com.xxx.server.entity.infotype.InfoType</value> 
      <value>com.xxx.server.entity.infotype.InfoTypeParam</value> 
      <value>com.xxx.server.entity.logging.LoggingEvent</value> 
      <value>com.xxx.server.entity.user.User</value> 

     </list> 
    </property> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory"> 
     <ref bean="sessionFactory" /> 
    </property> 
</bean> 
</beans> 

コンソール出力:

SCHWERWIEGEND: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appUploadService': Autowiring of fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.xxx.server.dao.AppDao com.xxx.backend.admin.service.impl.AppUploadServiceImpl.appDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appDao' defined in class path resource [applicationContext-server-persistence.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext-server-persistence.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:243) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:959) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.xxx.server.dao.AppDao com.xxx.backend.admin.service.impl.AppUploadServiceImpl.appDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appDao' defined in class path resource [applicationContext-server-persistence.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext-server-persistence.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:435) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:240) 
    ... 31 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appDao' defined in class path resource [applicationContext-server-persistence.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext-server-persistence.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:671) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:412) 
    ... 33 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext-server-persistence.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) 
    ... 48 more 
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.xxx.server.entity.app.App.distributions[com.xxx.server.entity.distribution.Distribution] 
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1071) 
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:602) 
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:543) 
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1163) 
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:329) 
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1148) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:673) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) 
    ... 58 more 
02.03.2012 15:47:59 org.apache.catalina.core.StandardContext start 
SCHWERWIEGEND: Error listenerStart 
02.03.2012 15:47:59 org.apache.catalina.core.StandardContext start 
SCHWERWIEGEND: Context [/xxx-appstore-admin] startup failed due to previous errors 
02.03.2012 15:47:59 org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
log4j:ERROR LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository. 

もう奇妙なこと:プロジェクトで正常に動作働いて多対多のrealationが既にある:

マッピングは、サーバーpersistence.xmlファイルであります

public class Info extends xxxEntity { 
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinTable(name = "USER_INFO", joinColumns = { @JoinColumn(name = "info_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") }) 
    private Set<User> users; 

public class User extends xxxEntity { 
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinTable(name = "USER_INFO", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "info_id") }) 
    private Set<Info> infos; 

私は2つのテストを書きました。

public class DistributionTest extends BaseDaoTest { 
    @Test 
    @Transactional 
    @Rollback(true) 
    public void testDistribution() { 
     // Test saving and loading Distribution 
     Distribution distribution = DomainCreator.createDistribution("Fedora", "16.01"); 
     this.distributionDao.save(distribution); 
     assertEquals(distribution, this.distributionDao.findByName("Fedora")); 

     // test loading set of distributions 
     App app = appDao.findById("a1"); 
     Set<Distribution> distros = app.getDistributions(); 
     assertEquals(3, distros.size()); 
    } 
} 

public class AppDaoTest extends BaseDaoTest { 
@Test 
@Transactional 
@Rollback(true) 
public void getAppsByDistribution() { 
    Distribution distribution = distributionDao.findById("d1"); 
    Set<App> apps = distribution.getApps(); 
    assertEquals(4, apps.size()); 
} 
} 

私はTomcat6に問題があると思いますか?

私がやったこと:Tomcat deployディレクトリ内のすべてを削除して公開しましたが、それと同じエラーです。

アイデアはありますか?

+0

はあなたのクラスを移動/名前変更されて持っています? (特にAppとDistribution)? –

+0

配布クラスを追加しました。アプリは同じままでした – Flo

答えて

0

私は合格したテストを書きました。 地元のtomcat6が何か問題を起こしているという考えがありました。 私は変更を別のサーバーに展開しました。 ご迷惑をおかけして申し訳ありません。

ありがとうございました。

乾杯、

Floの

0

例3をhttp://docs.oracle.com/javaee/5/api/javax/persistence/ManyToMany.htmlで確認してください。 joinColumnsとinverseJoinColumnsを例に基づいて構成されているのであればアプリケーションのマッピングが

@Entity 
@Table(name="APP") 
public class App extends xxxEntity { 

    @ManyToMany(mappedBy="apps") 
    private Set<Distribution> distributions; 

、のようにする必要があります。またご確認ください。

+0

ありがとうございます。私はそれを試みたが、私はまったく同じエラーを持っていた。 joinColumnsとinverseColumnsは、 から来ています。import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; – Flo

関連する問題