hibernate里聯合主鍵composite-id映射,查詢單個主鍵的問題


今天項目中遇到這個問題,搞了大半天,現在記錄下來
hibernate里聯合主鍵配置(多個字段一起作為主鍵)

<class name="com.cskj.hibernate.map.BbWjjc" table="bb_wjjc" schema="dbo" catalog="wjgl">
        <composite-id name="id" class="com.cskj.hibernate.map.BbWjjcId">
            <key-property name="wjtmid" type="java.lang.Long">
                <column name="wjtmid" />
            </key-property>
            <key-property name="wjxxid" type="java.lang.Long">
                <column name="wjxxid" />
            </key-property>
            <key-property name="wjzxxid" type="java.lang.Long">
                <column name="wjzxxid" />
            </key-property>
            <key-property name="wjztmid" type="java.lang.Long">
                <column name="wjztmid" />
            </key-property>
            <key-property name="wjid" type="java.lang.Long">
                <column name="wjid" />
            </key-property>
        </composite-id>

 

主鍵的生成文件

public class BbWjjcId implements java.io.Serializable {

 private Long wjtmid;
 private Long wjxxid;
 private Long wjzxxid;
 private Long wjztmid;
 private Long wjid;
。。。。。。

}

 

查詢單個主鍵時用HQL語句

from BbWjjc bw where bw.BbWjjcId.wjid=? 
結果報錯:
 could not resolve property: BbWjjcId of: com.cskj.hibernate.map.BbWjjc [from com.cskj.hibernate.map.BbWjjc bw where bw.BbWjjcId.wjid='5']

上網查了一下,說是hql語句的問題.
測試了大半天結果調試正常了,原來是bw.BbWjjcId.wjid=?中的BbWjjcId要寫映射xml中的name(即:id),不能寫PK類名字.
正確的HQL: from BbWjjc bw where bw.id.wjid=? 艱難搞定!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM