gpt4 book ai didi

jpa - 具有空值关系的目标实体属性的 JPQL LIKE 表达式

转载 作者:行者123 更新时间:2023-12-04 05:06:58 25 4
gpt4 key购买 nike

我有一个名为 Item 的实体与另一个实体的关系 Category可以为空。这两个实体如下:

项目

@Entity
public class Item {
@Id
private String id;
private String name;
private String code;
@ManyToOne
private Category category;
}

分类
@Entity
public class Category {
@Id
private String id;
private String name;
}

现在,我必须选择 项目 姓名 , 代码类别名称类似于搜索词,为此我尝试了以下查询:
"SELECT item FROM Item item "
+ "WHERE item.code LIKE :searchTerm OR item.name LIKE :searchTerm "
+ "OR item.category.name LIKE :searchTerm"
searchTerm设置使用
query.setParameter("searchTerm", "%" + searchTerm + "%");

但如果 category,结果不会为空为空(否则有效)。我也尝试了以下查询。
"SELECT item FROM Item item "
+ "WHERE item.code LIKE :searchTerm OR item.name LIKE :searchTerm "
+ "OR (item.category IS NOT NULL AND item.category.name LIKE :searchTerm)"

这也不起作用。仅当类别不为空时,如何才能检查类别名称?

最佳答案

尝试使用左连接:

"SELECT item FROM Item item LEFT JOIN item.category cat"
+ "WHERE item.code LIKE :searchTerm OR item.name LIKE :searchTerm "
+ "OR (cat.categoryID IS NOT NULL AND cat.name LIKE :searchTerm)"

JPQL documentation

关于jpa - 具有空值关系的目标实体属性的 JPQL LIKE 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15425040/

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