gpt4 book ai didi

java - Hibernate:使用集中的属性值创建 HQL 查询

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:11 25 4
gpt4 key购买 nike

我想创建一个可以访问一组特定对象的属性的 HQL 查询,让我通过一个简短的示例进行解释:

类(class)组织

public class Organization ...{
private int orgid;
private Set<DomainValue> languages = new HashSet<language>(0);
private Set<Address> adresses = new HashSet<Address>(0);
...
}

类(class)地址

public class Address  implements java.io.Serializable {
private int addressId;
private String city;
private String postalCode;
private String streetName;
private String houseNumber;
...
}

语言

public class Orgunitlanguage  implements java.io.Serializable {
private int orgLanguageId;
private Orgunit orgunit;
private Integer languageCd;
...
}

这些示例是工作 Hibernate POJO 的代码片段。所以我有一个可以拥有多个地址和语言的组织。

我希望用户指定搜索条件,但将其限制为每种搜索条件之一,因此只有一种语言、一种邮政编码等。

假设用户想要门牌号为 22 的英语组织

所以我会构建一个像这样的 hql 查询:

"from organization o where o.languages.languageCd = 1 AND o.addresses.housenumber = 22"

好吧,这不起作用(非法语法)我如何以正确的方式访问这些集合?请记住,我想访问特定的属性,而不仅仅是整个对象(这非常简单)。

我似乎找不到我理解的文档,所以一些解释会很好。

最佳答案

查询集合的正确方法是这样的

from Organization o join o.languages l join o.addresses a where l.languageCd = 1 AND a.housenumber = 22

但是,此查询将返回具有至少一种语言(languageCd = 1)和至少一个地址(housenumber = 22)的组织。它不会过滤掉不符合条件的语言和地址。检查this answer对此有更多解释。

关于java - Hibernate:使用集中的属性值创建 HQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28042588/

25 4 0
文章推荐: java - 使用 Apache Spark 进行 UDP
文章推荐: html - 我怎样才能让这个标志、口号和视频响应?
文章推荐: javascript - 我无法让容器
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com