每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          keyword:MySql字段,Hibernate session

          一.MySql字段敏感

          這幾天怪問題真是不少,這不剛建的一個數據庫的表用MiddleGen批量生成hbm.xml文件居然和數據庫的數據類型不一致.
          MySql建表語句如下:
          drop table if exists book;

          /*==============================================================*/
          /* Table: book                                                  */
          /*==============================================================*/
          create table book
          (
             id                             
          int                            not null,
             name                           
          varchar(100),
             author                         
          varchar(100),
             date                           date,
             price                          
          int,
             
          primary key (id)
          )
          comment
          ="Book table"
          type 
          = InnoDB;

          生成的hbm.xml文件如下:

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC
              "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" 
          >
              
          <hibernate-mapping>
          <!-- 
              Created by the Middlegen Hibernate plugin 2.1

              http://boss.bekk.no/boss/middlegen/
              http://www.hibernate.org/
          -->

          <class 
              
          name="net.foxlog.prj.Book" 
              table
          ="book"
          >
              
          <meta attribute="class-description" inherit="false">
                 @hibernate.class
                  table="book"
              
          </meta>

              
          <id
                  
          name="id"
                  type
          ="java.lang.Long"
                  column
          ="id"
              
          >
                  
          <meta attribute="field-description">
                     @hibernate.id
                      generator-class="assigned"
                      type="java.lang.Long"
                      column="id"


                  
          </meta>
                  
          <generator class="assigned" />
              
          </id>

              
          <property
                  
          name="name"
                  type
          ="java.lang.String"
                  column
          ="name"
                  length
          ="100"
              
          >
                  
          <meta attribute="field-description">
                     @hibernate.property
                      column="name"
                      length="100"
                  
          </meta>    
              
          </property>
              
          <property
                  
          name="author"
                  type
          ="java.lang.String"
                  column
          ="author"
                  length
          ="100"
              
          >
                  
          <meta attribute="field-description">
                     @hibernate.property
                      column="author"
                      length="100"
                  
          </meta>    
              
          </property>
              
          <property
                  
          name="date"
                  type
          ="java.sql.Date"
                  column
          ="date"
                  length
          ="10"
              
          >
                  
          <meta attribute="field-description">
                     @hibernate.property
                      column="date"
                      length="10"
                  
          </meta>    
              
          </property>
              
          <property
                  
          name="price"
                  type
          ="java.lang.String"
                  column
          ="price"
                  length
          ="10"
              
          >
                  
          <meta attribute="field-description">
                     @hibernate.property
                      column="price"
                      length="10"
                  
          </meta>    
              
          </property>

              
          <!-- Associations -->
            

          </class>
          </hibernate-mapping>

          注意到沒有,id的類型變成了Long型了,而price居然變成了String了,暈啊.

          各位碰到過這個問題么?

          最后還是找到問題所在了,實際上是建表有問題,問題就出在字段的名稱上,把id改為ID,price改為PRICE就沒問題了!  MySql對id和price敏感? 不得而知,目前看來好像是這樣.只是提醒我以后建表養成一個習慣,都用大寫的就沒問題了.
          沒想到一次測試中隨便建的一個表發現了這么個有趣的事情  :)

          二.Hibernate的session關閉問題
          用hibernate的工具類獲得session有沒有碰到過session is closed的錯誤提示? 我又幸運的碰到這個問題了,呵呵,我怎么有那么多問題啊,暈了,我看來是問題先生了,我的一個同事上次也跟我說過這個事情,后來他沒有正面解決這個,繞過去了,他用Spring去替自己解決了,呵呵,也夠狠的.不過問題實際上是獲得session的時候需要增加一個判斷. 即 session.isOpen() == false;
           
          DBUtil.java代碼如下:
          /**
               * 返回一個可用的數據庫Session連接
               * 
          @return Hibernate中對數據庫的Session連接
               * 
          @throws HibernateException
               
          */
              
          public static Session currentSession() throws HibernateException
              {
                  Session s 
          = (Session) session.get();
                  
          // Open a new Session, if this Thread has none yet
                  if (null==|| s.isOpen()==false)//注意這里
                  {
                      s 
          = sessionFactory.openSession();
                      session.set(s);
                  }
                  
          return s;
              }


          posted on 2006-02-24 00:25 Alex 閱讀(1376) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 屏南县| 荥阳市| 聊城市| 西宁市| 台山市| 色达县| 华池县| 恩施市| 卓尼县| 新宁县| 噶尔县| 中西区| 贵溪市| 开阳县| 平凉市| 万荣县| 塔河县| 陈巴尔虎旗| 泰安市| 武川县| 即墨市| 明光市| 云霄县| 沭阳县| 手机| 武乡县| 建阳市| 周宁县| 中阳县| 平陆县| 金沙县| 香格里拉县| 灵山县| 鄂尔多斯市| 彰化市| 红安县| 澄迈县| 巴林右旗| 谢通门县| 博兴县| 六枝特区|