hibernate處理視圖問題(記錄)

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   使用   os   io   

Mark,在使用hibernate處理視圖的時候。因為視圖沒有主鍵,這個用Myeclipse自動產生的POJO類就有兩個。一個類名.java,一個是類名Id.java,而對應檔只有一個。因此造成一個問題是,只要視圖中有一個欄位有一個為NULL,你查出來的資料就會為NULL。

解決辦法:

只要把hibernate逆向產生的檔案修改一下即可,直接把視圖當成資料庫表使用,當然視圖是不能插入資料的。

如:

反向產生的xml檔案:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--     Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping>    <class name="com.aircondition.store.pojo.VStockchanpin" table="v_stockchanpin" catalog="aircondition">        <composite-id name="id" class="com.aircondition.store.pojo.VStockchanpinId">            <key-property name="id" type="java.lang.String">                <column name="id" length="50" />            </key-property>            <key-property name="spid" type="java.lang.String">                <column name="spid" length="50" />            </key-property>            <key-property name="spmc" type="java.lang.String">                <column name="spmc" length="100" />            </key-property>            <key-property name="spsl" type="java.lang.Integer">                <column name="spsl" />            </key-property>            <key-property name="ggxh" type="java.lang.String">                <column name="ggxh" length="100" />            </key-property>            <key-property name="spdm" type="java.lang.String">                <column name="spdm" length="100" />            </key-property>            <key-property name="xgr" type="java.lang.String">                <column name="xgr" length="50" />            </key-property>            <key-property name="sfsc" type="java.lang.String">                <column name="sfsc" length="10" />            </key-property>            <key-property name="xgsj" type="java.util.Date">                <column name="xgsj" length="10" />            </key-property>        </composite-id>    </class></hibernate-mapping>

修改成(把複合主鍵改成主鍵,把key-property屬性改成property屬性):

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--     Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping>    <class name="com.aircondition.store.pojo.VStockchanpin" table="v_stockchanpin" catalog="aircondition">               <id name="id" type="java.lang.String">                   <column name="id"></column>                   <generator class="guid"></generator>               </id>            <property name="spid" type="java.lang.String">                <column name="spid" length="50" />            </property>            <property name="spmc" type="java.lang.String">                <column name="spmc" length="100" />            </property>            <property name="spsl" type="java.lang.Integer">                <column name="spsl" />            </property>            <property name="ggxh" type="java.lang.String">                <column name="ggxh" length="100" />            </property>            <property name="spdm" type="java.lang.String">                <column name="spdm" length="100" />            </property>            <property name="xgr" type="java.lang.String">                <column name="xgr" length="50" />            </property>            <property name="sfsc" type="java.lang.String">                <column name="sfsc" length="10" />            </property>            <property name="xgsj" type="java.util.Date">                <column name="xgsj" length="10" />            </property>    </class></hibernate-mapping>

相應的pojo也修改一下,直接把XXX.java刪除,把帶XXXId.java改成XXX.java即可。override的equal方法和hashcode方法,也可刪除。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.