Avatar billede sykofanten Nybegynder
25. november 2006 - 23:36 Der er 8 kommentarer og
1 løsning

jdo + jdoql problem

http://frip.dk/sykofanten/db.JPG

Problemet er at jeg ønsker at få en liste over låneansøgninger returneret, når jeg søger i db efter et bestemt kundenr, men modsat alle mine andre find metoder, returnerer den kun en tom liste, hvilket jeg slet ikke forstår en hat af, da jeg efterhånden har lavet en del af dem, og jeg har naturligvis kigget grundigt på de andre, og måttet konstatere at jeg ikke selv er i stand til at regne løsningen ud. Her er metoden:

public static List<Laaneansoegning> findLaaneansoegning(String kundeNr) {
        Transaction tx = getPm().currentTransaction();
        try {
            if (!tx.isActive())
                tx.begin();
            String query = "SELECT FROM test1.Laaneansoegning WHERE kunde.kundeNr == '" + kundeNr + "'";
            return (List<Laaneansoegning>) getPm().newQuery(query).execute();
        } catch (JDOException e) {
            if (tx.isActive())
                tx.rollback();
            e.printStackTrace();
            return null;
        }
    }




select * from laaneansoegning where kunde_nr = 7

virker fint i alm. sql, men hvorfor returnerer den en tom liste i jdoql, når jeg forsøger noget tilsvarende der?

Det forholder sig sådan, at det kundenr jeg helst vil sammenligne med er det der ligger i Kunde-klassen der er attribut på Låneansøgningen og har en getKundeNr()-metode.

kundenr på låneansøgningen kan jeg ikke engang bruge, men det var også kun en reserve løsning :|

Håber i forstår problemet sådan nogenlunde, og kan hjælpe mig.
Avatar billede arne_v Ekspert
25. november 2006 - 23:45 #1
har du checket din SQL ?

String query = "SELECT FROM test1.Laaneansoegning WHERE kunde.kundeNr == '" + kundeNr + "'";
String query = "SELECT FROM test1.Laaneansoegning WHERE kunde.kundeNr == " + kundeNr + "";
String query = "SELECT FROM test1.Laaneansoegning WHERE kunde.kundeNr = '" + kundeNr + "'";
String query = "SELECT FROM test1.Laaneansoegning WHERE kunde.kundeNr = " + kundeNr + "";
Avatar billede arne_v Ekspert
25. november 2006 - 23:47 #2
jeg kan ikke huske hvilke forskelle der er på JDOQL og SQL
Avatar billede sykofanten Nybegynder
25. november 2006 - 23:54 #3
har prøvet alle delene ja, og jeg har 3 andre søge funktioner der ser nøjagtig magen til ud, men de virker. Denne gør ikke, selvom jeg kan se i db via ms sql og query analyser, at det ser ok ud. ;/
Avatar billede winners79 Nybegynder
26. november 2006 - 02:11 #4
Nu ligger min database syntax ret langt væk men tror du prøver at hoppe over hvor gærdet er lavest... du skal jo slå kundenr op på kunden, også sammenlign kunderne med dem der ligger på laaneansoegning:
String query = "SELECT FROM kunde WHERE kundeNr == '" + kundeNr + "'" + AND kunde == test.Laaneansoegning;

Arne kan sikkert den rigtige syntax fra AND og frem....

og er ikke sikker på at jeg har ret, men er mit bedste gæt:)
Avatar billede winners79 Nybegynder
26. november 2006 - 02:12 #5
skulle nok have været test1.Laaneansoegning.kunde
Avatar billede winners79 Nybegynder
26. november 2006 - 02:16 #6
nej den vil jo returnerer kunder
Avatar billede sykofanten Nybegynder
26. november 2006 - 10:03 #7
ja den er ikke helt let :)
Avatar billede sykofanten Nybegynder
26. november 2006 - 10:17 #8
men den gir 200 points så googogogogogoogogo :D:D:D:D:D
Avatar billede sykofanten Nybegynder
26. november 2006 - 13:48 #9
fandt selv ud af det :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester