JPA: Wie führen Sie eine WIE mit eine Spalte "NUMMER" in ein statisches JPA-Metamodell?

Ich habe eine statische Metamodell mit einer ZAHL (tatsächlich, BigDecimal, fragt bitte nicht warum) - Spalte. Jetzt würde ich gerne eine LIKE-Abfrage, die Spalte "Nummer":

CriteriaBuilder cb;
cb.like(entity.get(Entity_.numbercol), "123%");

wo entity.get(Entity_.numbercol) gibt eine Path<BigDecimal>. Natürlich, ich bekomme einen kompilieren Fehler: ...like(Expression<String>, ...) ... not applicable for the arguments (Path<BigDecimal>, ...)

Casting der Spalte mit .as(String.class) scheitert aufgrund einiger Fehler in der PPV, aber ich habe nicht die bug-Nummer in die Hände, gerade jetzt. Es ist nicht fest in die neueste version von JPA/Hibernate, obwohl. Sowieso, es kommt zu einer exception zur Laufzeit, über einige ungültige SQL-Anweisung generiert wird.

Nun brauche ich nur noch einen Weg, um die Kriterien API-äquivalent zu der SQL

... WHERE numbercol LIKE '123%';

Suche nach dem Thema schon brachte die folgenden Antworten, die nicht helfen, weil ich eine statische Metamodell:
NHibernate - einfachste Weg, um eine LIKE-Suche gegen eine integer-Spalte mit den Kriterien-API? und JPA/Criteria API - Wie & gleichen problem

Irgendwelche Ideen?

Vielen Dank im Voraus
Dominik

  • Als workaround, und weil sichergestellt ist, dass der Platzhalter ist immer das Letzte Zeichen der Zeichenkette/Zahl, die ich erstellen Sie eine Reihe von zwischen Ausdrücke, z.B. für 123% ich habe =123 OR between (1230,1239) OR between(12300, 12399) OR between(123000, 123999) und so weiter. Nicht der beste Weg, aber zumindest funktioniert es.
Schreibe einen Kommentar