<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 閱讀(235) 評論(0)  編輯  收藏 所屬分類: Spring Dev

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

    導航

    統計

    留言簿

    隨筆分類(1)

    文章分類(52)

    好友 小山的博客

    最新隨筆

    最新評論

    主站蜘蛛池模板: 99精品免费观看| 四虎永久免费地址在线网站 | 久久综合亚洲色HEZYO社区 | 亚洲三级在线播放| 免费国产在线观看| 日韩免费观看一区| 欧洲亚洲综合一区二区三区 | 99在线热视频只有精品免费| 亚洲综合AV在线在线播放| 精品熟女少妇aⅴ免费久久| 久久久久亚洲AV成人网人人软件| 色屁屁www影院免费观看视频| 免费国产成人午夜私人影视| 花蝴蝶免费视频在线观看高清版 | 亚洲AV第一页国产精品| 日本高清色本免费现在观看| 亚洲av无码成人精品区一本二本| 国产麻豆免费观看91| 牛牛在线精品观看免费正| 亚洲中文久久精品无码1| 国产亚洲人成A在线V网站| 最新亚洲成av人免费看| 亚洲欧美成人一区二区三区| 色播在线永久免费视频| 久久99精品免费视频| 综合一区自拍亚洲综合图区| 在线观看亚洲一区二区| 色噜噜AV亚洲色一区二区| 国产午夜鲁丝片AV无码免费| 最近高清中文字幕无吗免费看| 亚洲日韩一区精品射精| 久久丫精品国产亚洲av| 亚洲日韩aⅴ在线视频| 91短视频在线免费观看| 国产一二三四区乱码免费| 美女黄频a美女大全免费皮| 亚洲最大av资源站无码av网址| 免费女人18毛片a级毛片视频| 二个人看的www免费视频| 美女被免费网站视频在线| 亚洲精品无码久久久久|