hibernate的映射出问题,我是想建立双向的1-N关系,用在Set就可以,但是用List就不行,为什么?而且我用同样的方法对另外的一个双向的1-N关系做List映射是可以的,就是到了这个就不行
首先发问题:
ERROR 11:46:44 [ContextLoader:206] - Context initialization failed 22766 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:206) 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalRequiredAnnotationProcessor': BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'genericTx': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf' defined in class path resource [META-INF/cxf/cxf.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot create inner bean '(inner bean)' of type [org.springframework.transaction.interceptor.TransactionInterceptor] while setting bean property 'transactionInterceptor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#9': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/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 URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for collection: com.skylink.csms.ycob.model.CallInspectInfo.inspectDetailInfos column: SID
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:481)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:883)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:593)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:351)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:251)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:551)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1341)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:520)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:474)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:42)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:151)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:42)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:223)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:42)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:982)

解决方案 »

  1.   

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot create inner bean '(inner bean)' of type [org.springframework.transaction.interceptor.TransactionInterceptor] while setting bean property 'transactionInterceptor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#9': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/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 URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for collection: com.skylink.csms.ycob.model.CallInspectInfo.inspectDetailInfos column: SID
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:229)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1274)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
    at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:87)
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:98)
    at org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator.findCandidateAdvisors(AnnotationAwareAspectJAutoProxyCreator.java:83)
    at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:105)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:290)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1368)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540)
    ... 52 more
      

  2.   

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#9': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/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 URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for collection: com.skylink.csms.ycob.model.CallInspectInfo.inspectDetailInfos column: SID
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:274)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1274)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:219)
    ... 71 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/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 URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for collection: com.skylink.csms.ycob.model.CallInspectInfo.inspectDetailInfos column: SID
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:274)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1274)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:268)
    ... 79 more
      

  3.   

    ... 100 more
    31406 [main] ERROR org.mortbay.log - Failed startup of context org.mortbay.jetty.webapp.WebAppContext@1c2e5bb{/gxyc,F:\workspace\gxyc\WebContent}
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalRequiredAnnotationProcessor': BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'genericTx': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf' defined in class path resource [META-INF/cxf/cxf.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot create inner bean '(inner bean)' of type [org.springframework.transaction.interceptor.TransactionInterceptor] while setting bean property 'transactionInterceptor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#9': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/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 URL [file:/F:/workspace/gxyc/WebContent/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for collection: com.skylink.csms.ycob.model.CallInspectInfo.inspectDetailInfos column: SID
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:481)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
      

  4.   


    public class InspectDetailInfo  implements java.io.Serializable {
        // Fields         /**
     * 
     */
    private static final long serialVersionUID = -2906746596383878133L;
     private Long id;                          //过程ID(主键)
         private CallInspectInfo callInspectInfo; //督察单号
         private String inspectIdea; //督察意见
         private String dealMan;     //处理人
         private Date dealTime;      //处理时间
    public class CallInspectInfo  implements java.io.Serializable {
        // Fields         /**
     * 
     */
    private static final long serialVersionUID = -1281858414838153032L;
     private String sid;       //督察编号
         private String srcType;   //源单类型
         private String srcId;     //源单号
         private String engineNo;  //发动机号
         private String createMan; //创建人
         private Date createTime;  //创建时间
         private String remindMan; //提醒人
         private Date remindTime;  //提醒时间
         private String status;    //状态:0-未完成,2-已完成
        // private Set inspectDetailInfos = new HashSet(0);
      private List<InspectDetailInfo> inspectDetailInfos = new ArrayList<InspectDetailInfo>();
      

  5.   

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.skylink.csms.ycob.model.InspectDetailInfo" table="SLYC_INSPECT_DETAIL_T" schema="YCCC">
            <id name="id" type="java.lang.Long">
                <column name="ID" precision="22" scale="0" />
                 <generator class="com.skylink.common.hibernate.generator.NumberIncrease" />
            </id>
             <many-to-one name="callInspectInfo" class="com.skylink.csms.ycob.model.CallInspectInfo" fetch="select">
                <column name="SID" precision="20" scale="0" />
            </many-to-one>
            
            <property name="inspectIdea" type="java.lang.String">
                <column name="INSPECT_IDEA" length="256" />
            </property>
            <property name="dealMan" type="java.lang.String">
                <column name="DEAL_MAN" length="32" />
            </property>
            <property name="dealTime" type="java.util.Date">
                <column name="DEAL_TIME" length="7" />
            </property>
        </class>
    </hibernate-mapping>
      

  6.   

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.skylink.csms.ycob.model.CallInspectInfo" table="SLYC_CALL_INSPECT_T">
            <id name="sid" type="java.lang.String">
                <column name="SID" length="20" />
                <generator class="com.skylink.common.hibernate.generator.ShortDateIncresment" />
            </id>
            <property name="srcType" type="java.lang.String">
                <column name="SRC_TYPE" length="10" />
            </property>
            <property name="srcId" type="java.lang.String">
                <column name="SRC_ID" length="20" />
            </property>
            <property name="engineNo" type="java.lang.String">
                <column name="ENGINE_NO" length="30" />
            </property>
            <property name="createMan" type="java.lang.String">
                <column name="CREATE_MAN" length="20" />
            </property>
            <property name="createTime" type="java.util.Date">
                <column name="CREATE_TIME" length="7" />
            </property>
            <property name="remindMan" type="java.lang.String">
                <column name="REMIND_MAN" length="20" />
            </property>
            <property name="remindTime" type="java.util.Date">
                <column name="REMIND_TIME" length="7" />
            </property>
            <property name="status" type="java.lang.String">
                <column name="STATUS" length="2" />
            </property>

     <list name="inspectDetailInfos"  cascade="all" inverse="true">
    <key column="SID" /> <!-- 多的一方的字段 -->
    <index column="SID"/> <!-- 自己的ID -->
    <one-to-many class="com.skylink.csms.ycob.model.InspectDetailInfo" />
    </list>


            
        </class>
    </hibernate-mapping>
      

  7.   

    关键在这里:
    Repeated column in mapping for collection: com.skylink.csms.ycob.model.CallInspectInfo.inspectDetailInfos column: SIDsid被映射到集合,又映射成属性,重复映射了?
      

  8.   

    也不是啊,InspectDetailInfo里本来就有SID这个字段,估计是在
    <list name="inspectDetailInfos" cascade="all" inverse="true">
    <key column="SID" /> <!-- 多的一方的字段 -->
    <index column="SID"/> <!-- 自己的ID -->
    <one-to-many class="com.skylink.csms.ycob.model.InspectDetailInfo" />
    </list>
    里<key和<index都是用SID所以是不是系统自己搞混了,就像人脑不知道去找哪个一样。