<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Spring學習筆記系列(五) 與hibernate整合 b

    常見問題及解決方案

    現象1:
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.support.DefaultPointcutAdvisor' defined in null: Can't resolve reference to bean 'txAdvice' while setting property 'advice'; nested exception is

    原因:缺少Spring開頭的各種包,到Spring2.0 src中編譯新的dist目錄出來,拷貝全部的springxxx.jar到jpetstore/WEB-INF/lib下。OK。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    現象2:
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in resource [/WEB-INF/dataAccessContext-hibernate.xml] of ServletContext: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
    java.lang.NoClassDefFoundError: javax/transaction/TransactionManager


    原因:缺少jta.jar,OK

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    現象3:

    java.lang.NoClassDefFoundError: org/dom4j/Attribute
    缺dom4j.jar
    java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
    缺ehcache.jar
    java.lang.NoClassDefFoundError: net/sf/cglib/core/KeyFactory
    缺cglib-full.jar

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    現象4:
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in resource [/WEB-INF/dataAccessContext-hibernate.xml] of ServletContext: Initialization of bean failed; nested exception is net.sf.hibernate.MappingException: could not instantiate id generator
    net.sf.hibernate.MappingException: could not instantiate id generator

    原因:
    hbm中id字段的定義為沒有定義的sequesce,修改為inc
    <id
       name="id"
       type="string"
       column="userid"
      >
       <generator class="net.sf.hibernate.id.IncrementGenerator"/> // 原來是sequence.
      </id>
    這樣就可以了。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    現象6:
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/shop/addItemToCart.do' defined in ServletContext resource [/WEB-INF/petstore-servlet.xml]: Can't resolve reference to bean 'petStore' while setting property 'petStore'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'petStore' is defined
    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'petStore' is defined
    原因:
    我使用Struts作為action,當然就不需要使用Spring WEB framework,因此也不需要與之配套的配置文件例如,petstore-servlet.xml,
    還有remote-servlet.xml ,但是Spring仍舊加載此兩個文件,沒辦法,只好將此兩個文件挪動到別的地方,但是又出現找不到這兩個
    文件的IO異常,沒辦法,只好又拷貝回來,然后把文件內容晴空。
    終于好用了。
    原 因就是,只要你在web.xml中定義了這個servlet,他就要去找此servlet名字對應的配置文件(servletname- servlet.xml),找不到就出錯。ok,現在注釋掉web.xml中名字為petstore的servlet定義和影色,刪除petstore- servlet.xml文件,哈哈,這下不報告錯誤了。
    同理,注釋名字為remote的servlet,刪除remote-servlet.xml后,重新啟動tomcat,這下不報告任何錯誤了。呵呵。原來如此啊。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    現象:
    java.lang.NullPointerException
     srx.test.testhibernate.UserDAO.getAll(UserDAO.java:9)
     srx.test.struts.action.UserAction.execute(UserAction.java:20)
    原因:

    Action原來
    UserDAO // 這個類OK
    public class UserDAO extends HibernateDaoSupport {
     public List getAll() {
           return this.getHibernateTemplate().find("select aa from Account aa");
     }
    }

    //這個類需要修改
    public class UserAction extends ActionSupport {
      UserDAO dao = new UserDAO();
      List accounts = dao.getAll();
    。。。
    }
    修改:
    //UserDAO dao = new UserDAO();
    WebApplicationContext wac = this.getWebApplicationContext();
      UserDAO dao = (UserDAO) wac.getBean("userDAO");
    OK


    現象:
    UserAction中修改:
    //UserDAO dao = (UserDAO) wac.getBean("userDAO");
    UserDAO dao = (UserDAO) wac.getBean("userDAOProxy"); //@1
    配置文件中增加:
    <bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
      <property name="transactionManager">
       <ref local="transactionManager"/>
      </property>
      <property name="target"><ref local="userDAO"/></property>
      <property name="transactionAttributes">
       <props>
        <prop key="insert*">PROPAGATION_REQUIRED</prop>
        <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
       </props>
      </property>
    </bean>

    這樣運行時@1處拋出ClassCastException.
    ===================================================================================================
    原因:
    仔細看指南0.8版本145頁所描述的事情.UserDAO雖然只繼承了HibernateDAOSupport,看來沒有事先任何接口,但是
    HibernateDAOSupport實現了InitiralBean接口,所以UserDAO也相當于實現了這個接口。
    因此本例按照實現了某個接口的DAO來處理,處理過程如下:
     因為他實現了接口A,所以getBean得到一個實現了A的實例,并非繼承UserDAO。所以用UserDAO轉型會失敗。
     如果UserDAO沒有實現接口A,那么getBean會得到一個UserDAO的子類實例,這時可以用UserDAO來轉型。
    綜上所訴,UserDAO必須實現IUserDAO接口,并且用IUserDAO轉型才行.
     因為UserDAO必須繼承HibernateDAOSupport,所以沒有辦法不實現任何接口.

    本問題和AOP有關。因為對AOP還不熟悉,所以需要看看。



    posted on 2007-06-18 18:02 chenguo 閱讀(237) 評論(0)  編輯  收藏 所屬分類: Spring Dev

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    留言簿

    隨筆分類(1)

    文章分類(52)

    好友 小山的博客

    最新隨筆

    最新評論

    主站蜘蛛池模板: 免费国产成人18在线观看| 精品人妻系列无码人妻免费视频| 91老湿机福利免费体验| 国产亚洲成AV人片在线观黄桃| A国产一区二区免费入口| 亚洲性久久久影院| 国产精品偷伦视频免费观看了| 亚洲中文字幕成人在线| 中文字幕免费在线看线人动作大片| 亚洲人AV永久一区二区三区久久| 一区二区三区视频免费观看| 精品亚洲一区二区三区在线观看| 一个人看的免费视频www在线高清动漫| 免费人成视网站在线观看不卡| 一级毛片人与动免费观看| 在线精品亚洲一区二区小说| 久久国产精品国产自线拍免费| 亚洲va无码专区国产乱码| 最近高清中文字幕免费| avtt天堂网手机版亚洲| 麻豆国产入口在线观看免费| 日韩在线观看视频免费| 亚洲大尺度无码无码专区| 7m凹凸精品分类大全免费| 国产成人亚洲综合网站不卡| yy6080久久亚洲精品| 免费成人高清在线视频| 亚洲乱码一二三四区麻豆| 国产视频精品免费| 中文字幕在线成人免费看| 亚洲神级电影国语版| 永久免费bbbbbb视频| 最近的2019免费中文字幕| 亚洲精品免费在线| 四虎永久免费观看| 野花香高清视频在线观看免费| 亚洲一级免费毛片| 亚洲中文字幕无码不卡电影| 日本阿v免费费视频完整版| 色多多A级毛片免费看| 亚洲毛片在线观看|