JPQL L*KE / JPA Query Language

  • Themenstarter Gelöschtes Mitglied 5909
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gelöschtes Mitglied 5909

Gast
Ich hab ein kleines Problemchen mit JPQL und zwar speziell mit LIKE

Im Moment erzielt man bei meiner Suchfunktion nur treffer, wenn das Wort exakt übereinstimmt,
was bei einer Suche natürlich nicht sonderlich toll ist.

Wildcards wie %:value% funktionieren nicht, da schmeißt er ne Exception

Code:
    public List<Tag> getTagsByValue(String value) {
        String jpql = "SELECT x from Tag x where x.value LIKE :value";
        Query query = entityManager.createQuery(jpql);
        query.setParameter("value", value);
        try {
            entityManager.getTransaction().begin();
            List<Tag> resultList = query.getResultList();
            for (Tag tag : resultList) {
                entityManager.refresh(tag);
            }
            entityManager.getTransaction().commit();
            return resultList;
        } catch (Exception e) {
            e.printStackTrace();
            return Collections.emptyList();
        }
    }

bei google bin ich noch auf ESCAPE gestoßen, wobei ich ja eigentlich erstmal nix escapen will...

vielleicht hat ja jemand eine Idee.

p.s.: Die Transaktion ist nötig um das Refresh durchzuführen und das ist nötig weil ich sonst teilweise alte Daten ausm Cache bekomm... (geht vielleicht anders besser, ist aber nicht wichtig)
 
M

Manuela

Gast
Hallo das sollte Funktionieren
Code:
Select x From-... where Kunde-name Like 'Mül%'
Gruß Manuela
 
S

SlaterB

Gast
query.setString("value", value);
auch wenn das für sich keinen Unterschied machen dürfte

was steht denn in Value genau drin, und welche Exception genau?
 
M

Manuela

Gast
Dann probiere mal das hier:
eine neue Idee
Code:
public List<Tag> getTagsByValue(String value) { 
        String jpql = "SELECT x from Tag x where x.value LIKE :value"; 
        Query query = entityManager.createQuery(jpql); 
        query.setParameter("value", value+"%'"); //setz dir deinen Sting einfach hier zusammen.
        try { 
            entityManager.getTransaction().begin(); 
            List<Tag> resultList = query.getResultList(); 
            for (Tag tag : resultList) { 
                entityManager.refresh(tag); 
            } 
            entityManager.getTransaction().commit(); 
            return resultList; 
        } catch (Exception e) { 
            e.printStackTrace(); 
            return Collections.emptyList(); 
        } 
    }

gruß Manuela.
 
S

SlaterB

Gast
nana, nix falsches vorschlagen,
auch ohne % sollte es keine Exception geben und das Anführungszeichen hinter dem % ist ja nun gewiss nicht gewollt
 
G

Gelöschtes Mitglied 5909

Gast
hab das jetzt so gelöst:

Code:
    public List<Tag> getTagsByValueLike(String value) {
        value = "%" + value.toLowerCase() + "%";
        String jpql = "SELECT x from Tag x where LOWER(x.value) LIKE :value";
        Query query = entityManager.createQuery(jpql);
        query.setParameter("value", value);
        try {
            entityManager.getTransaction().begin();
            List<Tag> resultList = query.getResultList();
            for (Tag tag : resultList) {
                entityManager.refresh(tag);
            }
            entityManager.getTransaction().commit();
            return resultList;
        } catch (Exception e) {
            e.printStackTrace();
            return Collections.emptyList();
        }
    }

Eine Exception in dem code oben gabs nicht, wollte ja nur meine suchergebnisse verbessern.

Wobei z.B. bei
Code:
String jpql = "SELECT x from Tag x where LOWER(x.value) LIKE %:value%
ne exception aufgetreten ist (could not parse query oder so ähnlich)
 
S

SlaterB

Gast
also das ist nun klar, :value wird letztlich in 'string' umgewandelt und

SELECT x from Tag x where LOWER(x.value) LIKE %'string'%

ist eindeutig falscher als

SELECT x from Tag x where LOWER(x.value) LIKE '%string%'


wenn schon, dann ginge nur
query.setParameter("value", "%"+value+"%");
oder ähnliches
 
M

Manuela

Gast
Hallo,
und was habe ich dan falsches gesagt.

ob man oben den String zusammenbaut
oder
query.setParameter("value", "%'"+value+"%');

ist doch eigendlich Jacke wie Hose.

Gruß Manuela :meld:
 
M

Manuela

Gast
Hallo
doch ein Fehler

muß natürlich

query.setParameter("value", "%"+ value+"%");

gruß Manuela
 
S

SlaterB

Gast
was du diesmal geschrieben hast ist nicht kompilierbar, das doppelte Anführungszeichen hinter dem letzten % fehlt,

dafür sind umso mehr einfache Anführungszeichen dabei, diesmal zwei,
die haben da nix zu suchen,

edit: ok, hast du nun auch korrigiert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2
R JPQL und Navigation durch Collection Datenbankprogrammierung 1
M JPQL - Join Verkettung Datenbankprogrammierung 8
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
A Jpql - order by sum ??? Datenbankprogrammierung 13
Y JPQL WHERE != Objekt Datenbankprogrammierung 10
S Alle Kunden mit ihren Adressen mit JPQL ausgeben Datenbankprogrammierung 2
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
T TRIM in Query Datenbankprogrammierung 3
D sql query in methode mit rückgabetyp Datenbankprogrammierung 14
OnDemand Mysql Query Builder Datenbankprogrammierung 1
P Herausfinden wann Query null zurück gibt? Datenbankprogrammierung 1
OnDemand SQL Query Optimierung Datenbankprogrammierung 28
Kirby.exe Verwirrung beim Query Datenbankprogrammierung 4
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Oracle Query umbauen (sind die Querys gleich?) Datenbankprogrammierung 5
B Frage bei einer SQL Query Datenbankprogrammierung 3
C Fehlerhafte SQL Query Datenbankprogrammierung 4
B MySQL Query (Anfängerfrage :D) Datenbankprogrammierung 3
B JPA / HQL Support bei Query - Distanzberechnung Datenbankprogrammierung 0
Thallius MySQL Was ist falsch an dem Query? Datenbankprogrammierung 2
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
OnDemand MySQL SQL Query Datenbankprogrammierung 2
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
H MySQL Anderer Query-Ansatz? Datenbankprogrammierung 4
P Tricky SQL Query Datenbankprogrammierung 3
P SQL Query Problem Datenbankprogrammierung 14
I Nullpointer bei einfacher Daba query Datenbankprogrammierung 12
I Query für Geburtstage Datenbankprogrammierung 6
S MYSQL: "Packet for query is too large" Datenbankprogrammierung 0
S HSQLDB PrepareStatement- Falsche query Datenbankprogrammierung 2
F Oracle The parameter name [...] in the query's selection criteria does not match any parameter name d Datenbankprogrammierung 2
J Fehler bei mySQL Query Datenbankprogrammierung 19
R MySQL berechnete Spalte im selben query weiterverwenden? Datenbankprogrammierung 4
S MySQL Hochkommata in Query Datenbankprogrammierung 7
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
T HQL Query funktioniert nicht? Datenbankprogrammierung 8
M PostgreSQL Hibernate Query Restriction Datenbankprogrammierung 2
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
algebraiker Eclipse RCP - no persistent classes found for query class Datenbankprogrammierung 4
M List aus Hibernate Query Datenbankprogrammierung 5
M JPA-Query - nicht das komplette Objekt Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
S DB2 Eclipselink Query Datenbankprogrammierung 2
LadyMilka Ergebnistyp HQL-Query Datenbankprogrammierung 3
M Frage zu folgender Query in EJB-QL Datenbankprogrammierung 4
Eldorado MySQL HQL Query Tag von Date Datenbankprogrammierung 6
H DB auslesen (Hibernate, Query, Parameter) Datenbankprogrammierung 8
C Split String für SQl query Datenbankprogrammierung 10
C setSelectedValue in SQL Query übergeben Datenbankprogrammierung 20
D Hibernate: Query verarbeiten Datenbankprogrammierung 11
B Hibernate, einfaches Query Ausgeben Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
L Query grafisch erzeugen Datenbankprogrammierung 6
N SQL Query Browser Error Datenbankprogrammierung 6
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
D Hibernate, Criteria Query Datenbankprogrammierung 2
O SQL-Query bringt Fehler Datenbankprogrammierung 4
D kurze Frage zu einem Query Datenbankprogrammierung 6
S Query aus Querys Datenbankprogrammierung 14
P [Hibernate] Criterion-Query in HQL übersetzen Datenbankprogrammierung 10
D Neuer Query wird nicht erkannt Datenbankprogrammierung 10
E Wie koennte die SQL Query aussehen? Datenbankprogrammierung 13
B mysql query ausführen Datenbankprogrammierung 4
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
B Ein Query mit Mysql erzeugen Datenbankprogrammierung 6
G Hilfe bei Query für Spaltenansicht. Datenbankprogrammierung 20
A Fehler bei query Datenbankprogrammierung 7
G SQL-Query Methode Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben