我有一个实体命名为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)"
这也没有奏效。仅当类别不为空时,如何才能检查类别名称?