【发布时间】:2013-03-03 17:35:12
【问题描述】:
我有一个名为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;
}
现在,我必须选择 name、code 或 category name 类似于搜索词的 items ,为此我尝试了以下查询:
"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)"
这也不起作用。仅当类别不为空时,如何才能检查类别名称?
【问题讨论】:
标签: jpa eclipselink jpql