Java 在Hibernate中使用Criterias进行多对一搜索
我有两种模式,俱乐部和地点。一个俱乐部只能有一个位置,一个位置可以有多个俱乐部。在我的pojo类中,我定义了以下两个:Java 在Hibernate中使用Criterias进行多对一搜索,java,hibernate,Java,Hibernate,我有两种模式,俱乐部和地点。一个俱乐部只能有一个位置,一个位置可以有多个俱乐部。在我的pojo类中,我定义了以下两个: // Club.java public class Club { private Location location; // some other attributes and getters/setters } // Location.java public class Location { private int id; // primary ke
// 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">
然而,我得到了错误
hibernate.QueryException:不是关联:id
每当我尝试将“location.id”替换为“location”时,调用getter location.id时就会出现一个IllegalArgumentException错误。到目前为止,我无法用这两种方法实现我的目标。已经在网上搜索了好几天了,但都没用。这里有什么问题?criterias.createAlias用于关联,而不是实体属性。请参阅java文档 根据您的要求,它应该是
Criteria crit = session.createCriteria(Club.class);
crit.createAlias("location", "location");
crit.add(Restrictions.eq("location.id", locationId);
我还没有测试代码。让我们知道进展如何 您是否尝试过
专用整数id
?不应该在hibernate中使用原语…@joc就可以了,不管有什么问题,谢谢!
Criteria crit = session.createCriteria(Club.class);
crit.createAlias("location", "location");
crit.add(Restrictions.eq("location.id", locationId);