gpt4 book ai didi

java - HQL查询where存在或列表元素之间

转载 作者:行者123 更新时间:2023-12-02 07:26:17 25 4
gpt4 key购买 nike

我有一个像这样的标签类:

public class Tag {

private Long id;

private String title;
private Set<Document> documents = new HashSet<Document>();

public Tag(){}

//getter and setter...

}

还有一个由一些标签对象分类的文档类

public class Document {

private Long id;

private String title;
private Int numberPages;
private Set<Tag> tags = new HashSet<Tag>();

public Document(){}

//getter and setter...

}

现在我想要获取最多 10 页的文档,并且它们带有“短”或“论文”标签

我猜是这样的:

int nPages = 10;
Query query = session.createQuery("from Document where nPages <= :numberPages and (<<short>> OR <<essay>>);
query.setInteger("numberPages", nPages);

标签列表可以是可变的。我想区分什么时候必须是所有标签(标签之间的“AND”)或任何标签就足够了(标签之间的“OR”)

如何构建sql语句?

最佳答案

我认为您的 HQL 应该如下所示:

  Query query = session.createQuery(
"from Document d join d.tags t "+
" where d.nPages <= :numberPages and "+
" t.title in (:titles) ";
List<String> titles = new ArrayList<String>();
titles.add("short");
titles.add("essay");
query.setParameter("numberPages", nPages);
query.setParameterList("titles", titles);

关于java - HQL查询where存在或列表元素之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557113/

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