nullになる可能性のあるItem
別のエンティティとの関係で名前が付けられたエンティティがあります。Category
2つのエンティティは次のとおりです。
アイテム
@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 + "%");
ただし、がnullの場合は空になりません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)"
これもうまくいきませんでした。カテゴリがnullでない場合にのみ、カテゴリ名をチェックするにはどうすればよいですか?