我有两个模特,俱乐部和位置。俱乐部只能有一个位置,一个位置可以有许多俱乐部。在我的pojo课程中,我将这两个定义如下:
// Club.java
public class Club {
private Location location;
// some other attributes and getters/setters
}
// Location.java
public class Location {
private int id; // primary key
// some attribues and getters/setters
}
我的hibernate映射是:
// some other mappings, foreign key is "location" column in my actual table, as // can be seen below
<many-to-one name="location" column="location" class="path/to/Club.java">
我需要按位置搜索分会 。我使用如下标准,
Criteria crit = session.createCriteria(Club.class);
crit.createAlias("location.id", "location");
crit.add(Restrictions.eq("location", locationId);
然而,我收到错误 hibernate.QueryException:不是关联:id
每当我尝试更换&#34; location.id&#34;使用&#34; location&#34;,然后在调用getter Location.id 错误时出现 IllegalArgumentException。到目前为止,我无法通过两种方式实现目标。几天来一直在网上搜索它,但没有一个是有用的。这有什么问题?
答案 0 :(得分:3)
Criteria.createAlias用于关联而非实体属性。请参阅java文档。
根据您的要求,它应该像
Criteria crit = session.createCriteria(Club.class);
crit.createAlias("location", "location");
crit.add(Restrictions.eq("location.id", locationId);
我没有测试过代码。让我们知道它是怎么回事。