糊言亂語

          志未半斤, 才無八兩. 有苦有樂, 糊涂過活。
          posts - 25, comments - 7, trackbacks - 0, articles - 42
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Hibernate復合主鍵BUG

          Posted on 2007-10-09 12:57 Stanley Sun 閱讀(310) 評論(0)  編輯  收藏
          在一般的項目中,數據庫主鍵不會擁有業務邏輯。但是在一些數據庫設計不是很嚴格的項目中還是會把擁護業務邏輯的字段作為主鍵使用,而且可能回事復合主鍵。 現在在一個項目我就遇到這情況。這個項目的數據訪問框架使用的Hibernate框架,在對復合主鍵的映射是我遇到了一個Hibernate Bug。我使用的數據庫是Oracle 8i。Hibernate Mapping如下:

          <composite-id name="id" class="InfoViewDetaillistId">

                     <key-property

                        name="accountno"

                        column="ACCOUNTNO"

                        type="string"

                     />

                     <key-property

                        name="rlsdepid"

                        column="RLSDEPID"

                        type="string"

                     />

                     <key-property

                        name="sequenceno"

                        column="SEQUENCENO"

                        type="integer"

                     />

                     <key-property

                        name="ondate"

                        column="ONDATE"

                        type="date"

                     />

          </composite-id>

          在這個復合主鍵中包括了四個擁有業務邏輯的字段,分別是帳號,中心號,序號,日期。問題就在Hibernate對日期類型的映射上,如使用上面的配置方法的話Hibernate在啟動的時候就會報錯。具體的解決方法是把
          <key-property

          name="ondate"

          column="ONDATE"

          type="date"

          />

          替換成

          <key-property name="ondate" type="date">

          <column name="ONDATE" not-null="true" sql-type="java.sql.Types.DATE"/>

          </key-property>

          Bug具體的原因我會在一會的文章中解釋。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 淳化县| 福鼎市| 昭平县| 商水县| 扎赉特旗| 商丘市| 阿巴嘎旗| 恩施市| 巩义市| 松阳县| 辽中县| 湖州市| 紫云| 文山县| 宁都县| 太谷县| 津南区| 兰溪市| 林芝县| 平果县| 奉化市| 台山市| 莎车县| 禹城市| 夹江县| 凉城县| 获嘉县| 湖北省| 岑巩县| 九龙城区| 通化市| 淄博市| 宁远县| 会宁县| 康保县| 英吉沙县| 科技| 桃园县| 景德镇市| 文成县| 勐海县|