2017-11-07 2 views
0

Ich möchte einen oder mehrere LIKE-Operator in der folgenden @ Where-Klausel für den gleichen Spaltennamen hinzufügen. Aber wenn ich LIKE mit OR/AND-Operator hinzufüge, bekomme ich nicht das genaue Ergebnis. Wie kann ich dieses Szenario vereinfachen, um den genauen Wert zu erhalten.Hibernate - SQL-Annotation @Where-Klausel mit mehreren LIKE-Operator für den gleichen Spaltennamen

Hier finden Sie meinen Code unten.

@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; 
} 

Wenn ich AND Operator

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

wird es gibt Null-Zeiger-Ausnahme für einige Datensätze.

Wenn i OR Operator verwenden

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

hier einige Werte Fehle.

Was ist der beste Ansatz, um dieses Szenario zu lösen?

Antwort

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

Above Abfrage bedeutet, jeder Datensatz von name Spalte 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%'") 

Above Abfrage bedeutet, jeder Datensatz von name Spalte must not contain long word but must contain either description or source word

Daraus ergibt sich die resultSet für beide Abfragen unterscheiden.

+0

Ist das eine andere Möglichkeit, beide Fälle zusammen zu kombinieren. Mittel, Abfrageergebnis sollte keine Ergebnisse verpassen, wenn etwas nicht verfügbar ist. – Karthikeyan

Verwandte Themen