2010-06-09 13 views
7

Wie kann ich die Wildcard-Zeichen in einer Like-Klausel entkommen lassen?Wie Wildcard-Zeichen in "wie" -Klausel in HQL entkommen?

Z. B .:

 
select foo from Foo as foo where foo.bar like '%' || :filter ||'%' 
 
query.setParameter("filter", "%"); 
query.list(); 
// I'd expect to get the foo's containing the '%' in bar, not all of them! 

Irgendwelche Ideen?

Antwort

11

In Hibernate 3 können Sie die Escape-Parameter verwenden, um die Escape-Zeichen angeben:

select foo from Foo as foo where foo.bar like '!%' escape '!' 

denke ich, dass funktionieren sollte, obwohl ich es noch nie in der Praxis ausprobiert haben.

+0

@DeanPovey Funktionierte nicht mit mir: 'Verursacht von: org.hibernate.hql.internal.ast.QuerySyntaxException: unerwartetes Token: Escape in der Nähe von Zeile 1, Spalte 175 [wählen Sie e.id, e.title, e. type.icon, e.typeObject, e.idDomain aus package.SomeClass e wo (UPPER (e.title) LIKE?) UND e.idDomain =? Flucht '!' ] ' – ViniciusPires