@hunter129

          天天學習,好好向上!

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            21 隨筆 :: 5 文章 :: 37 評論 :: 0 Trackbacks
          項目中用到 長文本作為內容
          pojo中使用 string 類型 數據 oracle9i 用的的clob字段
          pojo:

          private String content;
          public void setContent(String content){
              
          this.content = content;
          }
          hibernate配置
          <property name="content" column="C_Content" type="text" length="10000"></property>

          發現當content 字段的內容在 1000~2000 字符長度中間的時候出現 sql錯誤
          而文本長度小于1000 長于2000 都沒有問題。
          問題:hibernate配置中length="10000"屬性是做什么用的?我嘗試過 將他配置成1000,5000,1w或者不配置 最后執行的結果都一樣

          資料 google baidu。。。
          一般認為 length指定的是text的最大長度,這里顯然不是
          又有認為 是將java中string 值當作clob處理的最小長度,也就是當string長度小于這個值的時候 當string處理,當string大于這個長度的時候當text(clob)處理。但是我將length設置為1000時,輸入1k+文本 依然有sql錯誤。超過2000卻沒有問題。
          so..這兩個都不是答案.
          又有人說,介個是jdbcbug 換成10g的就米有問題了。遂嘗試..未果,問題依舊。
          finally..這個length屬性到底干嘛用 沒搞清楚.. 抑或 不該這么配置?

          繼續尋找,找到另外一種解決辦法??梢酝ㄟ^spring來解決這個問題
          hibernate配置
          <property name="content" column="C_Content" type="org.springframework.orm.hibernate3.support.ClobStringType"
          length
          ="10000"></property>

          spring配置
          <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">   
                  
          <property name="nativeJdbcExtractor">
                      
          <ref local="nativeJdbcExtractor"/>
                  
          </property>  
          </bean>   
          <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor">   
          </bean>
          上面2個bean是關鍵
          然后在sessionFactory的bean中加入
          <bean id="sessionFactory"
                  class
          ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                  
          <property name="lobHandler">   
                      
          <ref bean="oracleLobHandler" />   
                  
          </property>
                  。。。其他
          </bean>


          問題解決,但是length="10000" 屬性依然無用,可正常插入 任意長度的字符串
          但是這樣的話 數據庫就不能跨平臺了..so 期待跨數據庫平臺的 方案~~
          posted on 2008-01-28 15:48 hunter129 閱讀(4192) 評論(7)  編輯  收藏 所屬分類: 基礎

          評論

          # re: hibernate 映射 clob字段 2008-02-22 14:55 楊愛友
          根據我的感覺,hibernate配置里所有的length在程序中都是沒用的,可有可無,他的作用好象是在必要的時候生成數據庫用。  回復  更多評論
            

          # re: hibernate 映射 clob字段 2008-03-04 13:33 落Nicety
          @楊愛友
          恩 貌似是給那些 根據hibernate配置文件生成 sql的工具用的~~
          不過還沒找到官方的說明~~  回復  更多評論
            

          # re: hibernate 映射 clob字段 2008-06-03 19:28 使用該方法
          按照您說的做了 報c3P0的錯誤   回復  更多評論
            

          # re: hibernate 映射 clob字段 2008-06-03 21:23 落Nicety
          @使用該方法
          是不是其他地方配置的不對?有沒有詳細點的錯誤信息  回復  更多評論
            

          # re: hibernate 映射 clob字段 2008-10-20 17:31 膚,淺 ヽ
          按你說的做了,但是我的添加和修改都不能用啦!我已添加或者修改老報錯!  回復  更多評論
            

          # re: hibernate 映射 clob字段 2008-10-20 17:32 膚,淺 ヽ
          是type Exception report 500

          message

          description The server encountered an internal error () that prevented it from fulfilling this request.

          exception

          javax.servlet.ServletException: java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required
          org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
          org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
            回復  更多評論
            

          # re: hibernate 映射 clob字段 2008-10-27 14:41 落Nicety
          @膚,淺 ヽ
          看異常信息 應該是沒有配置事物管理器
          加上這個配置
          <bean id="transactionManager"
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
          <property name="sessionFactory" ref="sessionFactory" />
          <property name="nestedTransactionAllowed"> <value>true</value> </property>
          </bean>  回復  更多評論
            

          主站蜘蛛池模板: 东台市| 淮滨县| 伊宁市| 旌德县| 阿尔山市| 南丹县| 梁山县| 泾阳县| 西城区| 阿坝| 绥德县| 龙州县| 汨罗市| 新沂市| 交口县| 栾城县| 观塘区| 荆门市| 化隆| 怀宁县| 尉犁县| 石城县| 琼结县| 中山市| 三河市| 芦溪县| 西安市| 达拉特旗| 平顶山市| 雷山县| 天气| 巢湖市| 邵阳县| 咸丰县| 盐城市| 东丽区| 朝阳区| 宾阳县| 德安县| 阿勒泰市| 武安市|