Verwenden Sie reguläre Ausdrücke in JPA CriteriaBuilder
Ich verwende den JPA CriteriaBuilder, um Entitäten vom Typ auszuwählenMyEntity
aus einer MySQL-Datenbank wie folgt:
String regExp = "(abc|def)"
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery( MyEntity.class );
root = query.from( MyEntity.class );
predicates = new ArrayList<Predicate>();
predicates.add( cb.like( root.<String>get( "name" ), regExp ) );
Daher sollte das Abfrageergebnis eine Entität enthalten, in der dasname
value stimmt mit dem angegebenen regExp überein. Die Ergebnisliste ist jedoch immer leer. Ändern des RegExp auf/(abc|def)/g
hat keine Auswirkung und das Hinzufügen des Platzhalters auch nicht%
Wie funktioniert der Mustervergleich?
Alternativ: Wie kann ich natives MySQL REGEXP zusammen mit dem CriteriaBuilder verwenden?