gpt4 book ai didi

java - 使用条件在 Hibernate 中进行多对一搜索

转载 作者:行者123 更新时间:2023-11-30 07:59:30 24 4
gpt4 key购买 nike

我有两个模型,Club 和 Location。一个俱乐部只能有一个位置,一个位置可以有多个俱乐部。在我的 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

每当我尝试用“location”替换“location.id”时,我都会收到 IllegalArgumentException occurred while calling getter Location.id 错误。到目前为止,我无法通过两种方式实现我的目标。在网上搜索了好几天,但没有一个有用。这里有什么问题?

最佳答案

Criteria.createAlias 用于关联而非实体属性。看java文档。

按照你的要求应该是这样的

Criteria crit = session.createCriteria(Club.class);
crit.createAlias("location", "location");
crit.add(Restrictions.eq("location.id", locationId);

我还没有测试代码。让我们知道它是怎么回事。

关于java - 使用条件在 Hibernate 中进行多对一搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39243260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com