Alle Kunden mit ihren Adressen mit JPQL ausgeben

Status
Nicht offen für weitere Antworten.

saramaus

Neues Mitglied
Hallo Leute,

ich habe schon seit Tagen ein Problem. Ich möchte gerne eine Abfrage in Java Persistence Query Language ausgeben. Hierbei möchte ich alle Kunden mit Ihren Adressen ausgeben.

Mit Native SQL funktioniert es. Wie z.B. mit diesem Code:

Code:
Query o = em.createNativeQuery("SELECT * FROM `customer` Inner Join `address` ON `address`.`ID` = `customer`.`HOMEADDRESS_ID` ");
            List result = o.getResultList();
            Iterator ite = result.iterator();
       
            while (ite.hasNext())
            {
                Object obj = ite.next();
                System.out.println(obj);
            }

Bei Java Pesistence Query Language funktioniert es nicht:

Code:
Query alle = em.createQuery("SELECT c, p FROM Customer c, Address p WHERE c.homeAddress = p.id");
            List listealle = alle.getResultList();
            Iterator itlistealle = listealle.iterator();
            
            while (itlistealle.hasNext())
            {
                Object obj = itlistealle.next();
                System.out.println(obj);
            }

Hier bekomme ich nur die Objekte angezeigt:

[Ljava.lang.Object;@6295eb
[Ljava.lang.Object;@609959
[Ljava.lang.Object;@1f3ce5c
[Ljava.lang.Object;@1712b3a
[Ljava.lang.Object;@cd2e33
[Ljava.lang.Object;@9446e4

Ich habe 2 Klassen: Customer und Address

in Customer sieht die toString()-Methode wie folgt aus:

Code:
public String toString()
    {
        return "Kunde : " + firstname + " " + lastname + " "+ telephone+"  "+ email+" ";
    }

in Address sieht die toString()-Methode wie folgt aus:

Code:
public String toString()
    {
        return "Adresse : " + street + "  " + zipcode + " "+ city+"  "+ country+"";
    }

Wäre schön, wenn jemand hier einen Fehler sieht. Ich bin der Meinung , dass die Abfrage in JPQL richtig ist, denoch bekomme ich nur Objekte ausgegeben, trotz den toString()-Methoden.

Ihr könnt mich auch unter dieser Adresse erreichen: sarajusti@freenet.de

Danke!

Liebe Grüße

Sara
 
G

Guest

Gast
Das Ergebnis deiner JPQL Abfrage ist eine Liste von Arrays mit jeweils zwei Elementen (Kunde und Adresse). Die Ausgabe sieht so aus, weil toString() von Arrays nur die Referenz ausgibt.

So kannst du es ausgeben
Code:
...
while (itlistealle.hasNext()) 
{ 
   Object[] obj = (Object[])itlistealle.next(); 
   System.out.println(obj[0] + " - " + obj[1]); 
}
...

Besser wäre aber folgendes
Code:
public class Kunde
{
   ...
   private Set<Adresse> adressen = new HashSet<Adresse>();

   ...
}

Query query = em.createQuery("SELECT DISTINCT c FROM Customer c JOIN FETCH c.adressen");

List<Kunde> kunden = query.getResultList();

for( Kunde kunde : kunden )
{
   System.out.println(kunde);
   for( Adresse adresse : kunde.getAdressen())
   {
      System.out.println("   " + adresse);
   }
}

Gruß,
semi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
berserkerdq2 database is closed, obwohl ich alle statements in try catch blöcken habe? Datenbankprogrammierung 5
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
V SQLite 2 Tabelle vergleichen und alle unterschiede rausgeben Datenbankprogrammierung 1
D Script, um alle 5 secs den Windows Title abzuspeichern Datenbankprogrammierung 4
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
S Fast alle \ verschwinden Datenbankprogrammierung 4
A Sql Statement - Alle Zahlen größer 9 Datenbankprogrammierung 3
D Alle Werte aus DB auslesen und in Chart darstellen Datenbankprogrammierung 6
C ResultSet enthält nicht alle Daten Datenbankprogrammierung 4
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
N Oracle DB liefert nicht alle Datensätze Datenbankprogrammierung 3
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
A JList nimmt nicht alle Werte aus der DB auf Datenbankprogrammierung 3
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
clemson [SQL] Abfrage --> alle Gruppen, ohne MailConfig Datenbankprogrammierung 10
R JDBC-ODBC: Alle ODBC-Datenquellen ermitteln? Datenbankprogrammierung 4
B Möglichkeit an alle ODBC Namen zu kommen? Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L MySQL Kunden bestellung abbilden Datenbankprogrammierung 3

Ähnliche Java Themen


Oben