簡體   English   中英

Hibernate 組合鍵的標准問題

[英]Hibernate criteria problem with composite key

我得到了這個 hibernate 映射:

<class name="CoverageTerm" table="coverage_term">

    <composite-id name="id" class="CoverageTermPK">
        <key-many-to-one name="productTerm" class="ProductTerm">
            <column name="termtype_id"></column>
            <column name="product_id" ></column>
        </key-many-to-one>
        <key-many-to-one name="productCoverage" class="ProductCoverage" column="product_coverage_id"></key-many-to-one>
    </composite-id>

    <property name="data"/>
</class>

這是一個簡單的復合鍵映射,與表 productCoverage 有關系,與 productterm 有復合鍵關系。

現在問題出現在我的搜索 function 中:

public CoverageTerm getCoverageTermFromProductTermCoverage(ProductTerm productTerm, ProductCoverage productCoverage) {
    Criteria critCt = getSession().createCriteria(CoverageTerm.class);
    Criteria critCtId = critCt.createCriteria("id");
    critCtId.add(Restrictions.eq("productTerm", productTerm));
    critCtId.add(Restrictions.eq("productCoverage", productCoverage));
    return (CoverageTerm) critCt.uniqueResult();
}

這應該讓我在“id”(這是主鍵 CoverageTermPK)上創建一個子標准並對其添加限制,但是當我運行它時,我收到錯誤消息:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.QueryException: could not resolve property: productTerm of: CoverageTerm

這感覺很奇怪,它不應該在那里得到 CoverageTermPK 嗎? 如果我嘗試在“數據”屬性上使用子標准,則標准有效,我似乎無法在“id”子標准上獲得 PK。

關於為什么會發生這種情況的任何想法?

不確定您的特定 class 結構,但嘗試以這種方式添加 id 而不是單獨的標准:

Restrictions.eq("id.productTerm", productTerm);
Restrictions.eq("id.productCoverage", productCoverage);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM