Hibernate - SQL 注释@Where 子句在同一列名称上具有多个 LIKE 运算符

Hibernate - SQL annotation @Where clause with multiple LIKE operator on the same column name

我想在下面的@Where 子句中为同一列名称添加一个或多个 LIKE 运算符。但是,如果我使用 OR/AND 运算符添加 LIKE,则不会得到准确的结果。 我如何简化这种情况以获得准确的值。

请在下面找到我的代码。

@OneToMany( mappedBy = "product", cascade = CascadeType.ALL)
@Where(clause="name NOT LIKE '%long%' AND name LIKE '%description'")
private List<ProductAttr> productAttr;
public List<ProductAttr> getProductAttr() {
    return productAttr;
}

public void setProductAttr(List<ProductAttr> productAttr) {
    this.productAttr = productAttr;
}

如果我使用 AND 运算符

@Where(clause="name NOT LIKE '%long%' AND name LIKE '%description' AND name 
LIKE '%source%'")

对于部分记录会报空指针异常

如果我使用 OR 运算符

    @Where(clause="name NOT LIKE '%long%' AND name LIKE '%description' OR 
    name LIKE '%source%'")

这里缺少一些值。

解决这种情况的最佳方法是什么?

@Where(clause="name NOT LIKE '%long%' AND name LIKE '%description' AND name LIKE '%source%'")

以上查询表示name列的每条记录must not contain long word and must contain description word and must contain source word

@Where(clause="name NOT LIKE '%long%' AND name LIKE '%description' OR name LIKE '%source%'")

以上查询表示name列的每条记录must not contain long word but must contain either description or source word

因此两个查询的结果集将不同。