2012-07-23 30 views
0

我開發一個應用程序,GWT,Spring MVC和Hibernate的組合多對多關係問題(具體我使用Hibernate 3的jar庫)。我是Hibernate的新手,我需要使用以下模型。與Spring/Hibernate3的

enter image description here

SO節點和牆壁,房間和牆之間,我需要有多對多的關係。

這裏是節點實體類的代碼:

package sk.jakub.app.shared.model; 

@Entity 
public class Node implements Serializable{ 
    private static final long serialVersionUID = -5924198459524011627L; 

    private Long id; //id of the concrete node 
    private float x, y; 

    @ManyToMany 
    private Collection<Wall> walls; 

    public Node(){ 
     walls = new ArrayList<Wall>(); 
    } 

    @Id 
    @Column(name = "NODE_ID") 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    //getters and setters for x,y omitted 

    public void addWall(Wall wall){ 
     if(!getWalls().contains(wall)) 
      getWalls().add(wall); 
     if(!wall.getNodes().contains(this)) 
      wall.getNodes().add(this); 
    } 

    public Collection<Wall> getWalls(){ 
     return walls; 
    } 
} 

而且的.java實體類:

package sk.jakub.app.shared.model; 

@Entity 
public class Wall implements Serializable{ 
    private static final long serialVersionUID = -5924198459524011627L; 

    private Long id; 
    private String type; 

    @ManyToMany 
    private Collection<Room> rooms; 

    @ManyToMany(targetEntity=Node.class, mappedBy="walls", fetch=FetchType.EAGER) 
    private Collection<Node> nodes; 

    public Wall(){ 
     nodes = new ArrayList<Node>(); 
    } 

    @Id 
    @Column(name = "WALL_ID") 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    //getters and setters for type omitted 

    public Collection<Node> getNodes(){ 
     return nodes; 
    } 

    public void addNode(Node node){ 
     if(!getNodes().contains(node)) 
      getNodes().add(node); 
     if(!node.getWalls().contains(this)) 
      node.getWalls().add(this); 
    } 

    public Collection<Room> getRooms(){ 
     return rooms; 
    } 

    public void addRoom(Room room){ 
     if(!getRooms().contains(room)) 
      getRooms().add(room); 
     if(!room.getWallsH().contains(this)) 
      room.getWallsH().add(this); 
    } 
} 

間的.java實體類:

package sk.jakub.app.shared.model; 

@Entity 
public class Room implements Serializable{ 
    private static final long serialVersionUID = -5924198459524011627L; 

    private Long id; 
    private String name; 
    private String description; 

    @ManyToMany(targetEntity=Wall.class, mappedBy="rooms", fetch=FetchType.EAGER) 
    private Collection<Wall> wallsH; 

    public Room(){ 
     wallsH = new ArrayList<Wall>(); 
    } 

    @Id 
    @Column(name = "ROOM_ID") 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 

    //getters and setters for name and descritpion omitted 

    public Collection<Wall> getWallsH(){ 
     return wallsH; 
    } 

    public void addWallsH(Wall wall){ 
     if(!getWallsH().contains(wall)) 
      getWallsH().add(wall); 
     if(!wall.getRooms().contains(this)) 
      wall.getRooms().add(this); 
    } 
} 

現在的DAO(數據訪問對象)。

NodeDAO

package sk.jakub.app.server.dao; 

@Repository 
public class NodeDAO { 

    @Autowired 
    private HibernateTemplate hibernate; 

    public Node get(Long id){ 
     return hibernate.get(Node.class, id); 
    } 

    public void delete(Node entity){ 
     hibernate.delete(entity); 
    } 

    public void save(Node entity){ 
     hibernate.saveOrUpdate(entity); 
    } 

    private Session getCurrentSession(){ 
     return hibernate.getSessionFactory().getCurrentSession(); 
    } 
} 

WallDAO

package sk.jakub.app.server.dao; 

@Repository 
public class WallDAO { 

    @Autowired 
    private HibernateTemplate hibernate; 

    public Wall get(Long id){ 
     return hibernate.get(Wall.class, id); 
    } 

    public void delete(Wall entity){ 
     hibernate.delete(entity); 
    } 

    public void save(Wall entity){ 
     hibernate.saveOrUpdate(entity); 
    } 

    private Session getCurrentSession(){ 
     return hibernate.getSessionFactory().getCurrentSession(); 
    } 
} 

RoomDAO

package sk.jakub.app.server.dao; 

@Repository 
public class RoomDAO { 

    @Autowired 
    private HibernateTemplate hibernate; 

    public Room get(Long id){ 
     return hibernate.get(Room.class, id); 
    } 

    public void delete(Room entity){ 
     hibernate.delete(entity); 
    } 

    public void save(Room entity){ 
     hibernate.saveOrUpdate(entity); 
    } 

    private Session getCurrentSession(){ 
     return hibernate.getSessionFactory().getCurrentSession(); 
    } 
} 

現在這裏是春天MVC 的applicationContext.xml

<?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:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/tx 
         http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
         http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans.xsd 
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context-2.5.xsd 
         http://www.springframework.org/schema/aop 
         http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 

<tx:annotation-driven transaction-manager="transactionManager"/> 
<context:annotation-config/> 

<!-- NASTAVENIE KORENOVEHO BALIKA --> 
<context:component-scan base-package="sk.jakub.app.server"/> 
<aop:aspectj-autoproxy/> 

<bean id="databaseProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

</bean> 

<!-- UDAJE PRE PRIPOJENIE DO DATABAZY A VYTVORENIE BEANU PRE DATA SOURCE --> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="url" value="jdbc:mysql://localhost:3306/editor" /> 
    <property name="username" value="root" /> 
    <property name="password" value="gk04006c" /> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="maxActive" value="100" /> 
    <property name="maxIdle" value="30" /> 
    <property name="maxWait" value="-1" /> 
    <property name="defaultAutoCommit" value="false" /> 
</bean> 


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

<!-- NASTEAVENIE DIALEKTU PRE HIBERNATE A POD --> 
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" destroy-method="destroy"> 
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="sk.jakub.app.shared.model" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.show_sql">false</prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
      <prop key="hibernate.id.new_generator_mappings">true</prop> 
     </props> 
    </property> 
</bean> 

<!-- NASTAVEIE HIBERNATE TEMPLATE PRE PRIPOJENIE KU DATABAZE, TEN JE POTOM PRIPRAVENY NA AUTOWIRING DO SAMOTNEHO JAVOVSKEHO KODU --> 
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

</beans> 

的問題是,我得到以下錯誤信息

Starting Jetty on port 8888 
    [WARN] Failed startup of context com.g[email protected]1d69af9f{/,/home/jakub/ws/Editor1/war} 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roomDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate sk.jakub.app.server.dao.RoomDAO.hibernate; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in ServletContext resource [/WEB-INF/applicationContext.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 ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
    at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:222) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
    at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate sk.jakub.app.server.dao.RoomDAO.hibernate; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in ServletContext resource [/WEB-INF/applicationContext.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 ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
    ... 31 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in ServletContext resource [/WEB-INF/applicationContext.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 ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)] 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474) 
    ... 33 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
    ... 46 more 
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:291) 
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:275) 
    at org.hibernate.mapping.Property.isValid(Property.java:217) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:236) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1193) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 
    ... 53 more 
    [WARN] Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roomDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate sk.jakub.app.server.dao.RoomDAO.hibernate; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in ServletContext resource [/WEB-INF/applicationContext.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 ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)]: 
org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Wall, for columns: [org.hibernate.mapping.Column(nodes)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:291) 
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:275) 
    at org.hibernate.mapping.Property.isValid(Property.java:217) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:236) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1193) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
    at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:222) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
    at com.google.gwt.dev.DevMode.main(DevMode.java:311) 

我想問題可能是在定義多對多關係的集合。我嘗試了@ElementCollection批註ManyToMany集合,但它沒有奏效。

非常感謝您的任何建議,意見和幫助:)

+0

如果需要我也可以發佈web.xml文件 – Reshi 2012-07-23 21:43:54

回答

3

你必須選擇:要麼你註釋干將,或您註釋字段。但不是兩個。

如果@Id是一個getter,然後領域的所有註釋將被忽略。如果@Id在一個字段上,那麼getter上的所有註釋都將被忽略。

+0

非常感謝你,現在它的工作原理:)我認爲這並不重要,因爲我把這個annottation因爲我沒有找到任何關於它的教程,我通過 – Reshi 2012-07-23 22:09:20