繁体   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