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
因此两个查询的结果集将不同。
我想在下面的@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
因此两个查询的结果集将不同。