Ich arbeite mit einer Legacy-Datenbank und verwende Spring-Daten-JPA für den Repository-Zugriff. Eine der Tabellen hat eine ID-Spalte mit dem Datentyp number, aber die Anforderung besteht darin, eine teilweise Übereinstimmung mit einem Platzhalterzeichen durchführen zu können. So sollte 12 1234. übereinstimmen Wenn ich nativen Abfrage schreibe, kann ichSo vermeiden Sie die Typkonvertierung für Teilübereinstimmungen in nummerbasierten Spalten
select * from table where id like 12%
tun, aber wenn der Frühling JPA Criteria API verwenden, die Sicherheit bietet Typ, ich habe eine Typumwandlung zu tun, bevor ich wie nutzen könnten Betreiber
cb.like(root.get(SomeEntity_.id).as(String.class), str + "%")
Beachten Sie, dass ich die .as hinzufügen müssen (String.class) der Lage sein, einen String Match mit like
Operator durchzuführen. Daraus ergibt sich eine Datentypumwandlung und die Abfrage ist nicht in der Lage von ID-Index
cast(table0_1_.id as varchar(255)) like ?
Ist profitieren es eine Möglichkeit, wie Spiel für diese Nummer basierend Spalte durchzuführen, ohne die Typumwandlung durchführen zu müssen?
Sinn macht. Danke für den Hinweis. – adeelmahmood