Dyt*_*tut 4 java spring hibernate composite
我得到了这个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>
Run Code Online (Sandbox Code Playgroud)
这是一个简单的复合键映射,它与表productCoverage和productterm的复合键关系有关.
现在问题来自我的搜索功能:
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();
}
Run Code Online (Sandbox Code Playgroud)
这应该让我在"id"(这是主键,CoverageTermPK)上创建一个子标准并对其添加限制,但是当我运行它时,我收到错误消息:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.QueryException: could not resolve property: productTerm of: CoverageTerm
Run Code Online (Sandbox Code Playgroud)
这感觉很奇怪,不应该在那里得到CoverageTermPK吗?如果我尝试使用"data"属性的子标准来标准工作,我似乎无法在"id"子标准上获得PK.
关于为什么会发生这种情况的任何想法?
Ale*_*man 12
不确定您的特定类结构,但尝试以这种方式添加id而不是单独的标准:
Restrictions.eq("id.productTerm", productTerm);
Restrictions.eq("id.productCoverage", productCoverage);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11141 次 |
| 最近记录: |