namne1123 Skrevet 13. november 2008 Del Skrevet 13. november 2008 Hei. Prøver å sette opp en NamedQuery som skal gi en søkefunksjon i en database. Slik jeg har det nå må jeg søke på hele navnet, for å få resultat. Tenkte jeg kunne sette det opp slik: @NamedQuery( name="User.byFullname", query="SELECT k FROM User k WHERE k.fullname LIKE :%" ), Men % blir ikke godtatt når jeg prøver å "deplyoe". Noen som har noen forslag til hvordan select-setningen kan skrives? (beklager hvis det er litt rart spm) Takker for svar. Lenke til kommentar
Edorph Skrevet 13. november 2008 Del Skrevet 13. november 2008 (endret) Du må vel ha enkle anførselstegn rundt strengen som kommer etter LIKE. Altså SELECT k FROM User k WHERE k.fullname LIKE 'foo%bar' I tillegg lurer jeg på hvorfor du har et kolon der? Kolon brukes som prefiks for navngitte parametere. Overse det over.. gav ikke mye mening. @NamedQuery( name="User.byFullname", query="SELECT k FROM User k WHERE k.fullname LIKE :nameparam" ) ..og så, der du skal kjøre spørringa, kan du bruke noe ala dette: EntityManager.createNamedQuery("User.byFullname").setParameter("nameparam", "%" + someName + "%").getResultList() Endret 13. november 2008 av Edorph Lenke til kommentar
namne1123 Skrevet 14. november 2008 Forfatter Del Skrevet 14. november 2008 Takk for svar, det var til god hjelp. Nå kan jeg søke på deler av et navn å få resultat så lenge jeg husker storbokstav der det skal være storbokstav. Lenke til kommentar
blackbrrd Skrevet 15. november 2008 Del Skrevet 15. november 2008 Du må bruke ILIKE for å slippe å huske på store/små bokstaver. I f.eks Postgres må du da lage en spesiell indeks på UPPER(feltnavn) for å slippe sequential scan av tabellen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå