Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hibernate中使用Criterias进行多对一搜索_Java_Hibernate - Fatal编程技术网

Java 在Hibernate中使用Criterias进行多对一搜索

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

我有两种模式,俱乐部和地点。一个俱乐部只能有一个位置,一个位置可以有多个俱乐部。在我的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">
然而,我得到了错误 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);