我有一個名爲Item
的實體,與另一個實體Category
之間的關係可以爲null。這兩個實體如下:JPQL LIKE表達式與空值關係中的目標實體的屬性
項目
@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)"
這也沒有奏效。我如何才能使它僅在類別不爲空時檢查類別名稱?
非常感謝。有效。 – 2013-03-15 09:11:13