Hibernate und Fehlermeldung

NatGro

Mitglied
Code:
// neue Transaction
Transaction newtran = newSession.beginTransaction();

List contacts =  newSession.createQuery("from Contact m order by m.id asc").list();

System.out.println( contacts.size() + " message(s) found:" );

// Ausgabe
for ( Iterator iter = contacts.iterator();
iter.hasNext(); ) {
Contact loadedCon = (Contact) iter.next();
System.out.println( loadedCon.getFirstName() + "  ID:" + loadedCon.getId() );
}

Oben seht Ihr den Teil meines Quellcodes. Ich habe ein Hibernate Tutorial angefangen und es klappt auch soweit etwas in die DB zu schreiben und auch wieder auszulesen.

Mein Problem ist, das mir Eclipse meldet:
Iterator is a raw type. References to generic type Iterator<E> should be parameterized
bzw.
List is a raw type. References to generic type Iterator<E> should be parameterized

Ist das ein Problem?
 

NatGro

Mitglied
So etwas hatte ich mir schon gedacht.

Es müsste also ähnlich wie hier aussehen z.B. oder?

Code:
List<Integer> myIntList = new LinkedList<Integer>();

Wenn ich das also beispielsweise auf die Zeile
Code:
List contacts =  newSession.createQuery("from Contact m order by m.id asc").list();
beziehe, sollte diese dann ja "links" so aussehen, oder?

Code:
List<XYZ> contacts =  newSession.createQuery("from Contact m order by m.id asc").list();

Nur weiß ich ja nicht, was mir das Hibernate Framework mit "newSession.createQuery("from Contact m order by m.id asc").list();" zurückgibt!?
 
S

SlaterB

Gast
doch, du weißt es, jedenfalls soweit es relevant ist,
Generics ist nur für den Compiler interessant, zur Laufzeit quasi nicht mehr vorhanden,
die Methodensignatur sagt dir, dass eine beliebige Liste zurückkommt, nicht mehr und nicht weniger,

genauso wie du bei get() auf der Liste nach Integer castest, weil du das aus dem Quellcode, aus dem HQL mehr oder weniger erkennst,
genauso müsstest du die Liste manuell zu einer List<wasauchimmer> machen, das kann nicht automatisch funktionieren
weil Hibernate eine beliebige Liste zurückgibt,

ich empfehle, niemals .list() einzeln aufzurufen, sondern über eine statische Methode:
Java:
public static <T>List<T> getList(Query query)
{
    return query.list();
}

hier kann man
List<Integer> myIntList = getList(query);
schreiben, der generische Parameter wird im normalen Code passend ohne Fehlermeldung/ Warnung angenommen,
nur in der statischen Methoden wird genau einmal gemeckert

in der Methode kann man dann auch gut loggen, Queries zählen usw.
 

NatGro

Mitglied
Also wie gesagt, ich habe kürzlich erst mit Hibernate angefangen.
Wenn ich Dich richtig verstehe, müsste ich also den Befehl "query.list();" in eine separate Methode auslagern, richtig?

Die Bedeutung von "<T>List<T>" verstehe ich ehrlich gesagt nicht ganz.
???:L
 
S

SlaterB

Gast
du musst sie nicht auslagern und <T>List<T> auch nicht verstehen, wenn du aber beides verwendest kannst du
List<Integer> myIntList = getList(query);
schreiben, wie gesagt

anderenfalls nicht, dann hast du erstmal nur eine List,
wenn du sie wie in deinem Code ganz oben verarbeitest bekommst du Warnings,
ein echtes Problem sind sie nicht unbedingt wenn du Generics nicht verwenden willst, kann man auch abschalten

> Also wie gesagt, ich habe kürzlich erst mit Hibernate angefangen.

hat absolut nichts mit Hibernate zu tun, außer das Hibernate dir eine einfache List liefert,
das kann jedes 10-Zeilen-Programm auch
 

dunhillone

Mitglied
Die Bedeutung von "<T>List<T>" verstehe ich ehrlich gesagt nicht ganz.
???:L

Es geht ihm darum, die Warnung, welche vom Java Compiler ausgegeben wird, in eine statische Methode auszulagern. Manche stören sich auch in der IDE an der Warnung. Es gibt jedoch auch noch die Möglichkeit, die Warnung für eine Methode auszuschalten.

Java:
@SuppressWarnings("unchecked")
public void meineMethode() {

dann stört sie auch nicht mehr..
 

NatGro

Mitglied
Es geht ihm darum, die Warnung, welche vom Java Compiler ausgegeben wird, in eine statische Methode auszulagern. Manche stören sich auch in der IDE an der Warnung. Es gibt jedoch auch noch die Möglichkeit, die Warnung für eine Methode auszuschalten.

Java:
@SuppressWarnings("unchecked")
public void meineMethode() {

dann stört sie auch nicht mehr..

Also das bedeutet in meinem Falle, das ich diese Warnung theoretisch einfach ignorieren kann,
weil ich ja weiß das ich eine "Irgendwas"-Liste zurückbekomme, oder?

Die Warnung ist also eher für den Programmierer gedacht, damit es nicht so schnell Probleme mit unkompatiblen Typen gibt?
 

NatGro

Mitglied
du musst sie nicht auslagern und <T>List<T> auch nicht verstehen, wenn du aber beides verwendest kannst du
List<Integer> myIntList = getList(query);
schreiben, wie gesagt

anderenfalls nicht, dann hast du erstmal nur eine List,
wenn du sie wie in deinem Code ganz oben verarbeitest bekommst du Warnings,
ein echtes Problem sind sie nicht unbedingt wenn du Generics nicht verwenden willst, kann man auch abschalten

> Also wie gesagt, ich habe kürzlich erst mit Hibernate angefangen.

hat absolut nichts mit Hibernate zu tun, außer das Hibernate dir eine einfache List liefert,
das kann jedes 10-Zeilen-Programm auch


Könntest Du mir ein kurzes Beispiel coden und hier posten bitte?
Bin wie gesagt ziemlicher Anfänger.
 
S

SlaterB

Gast
wofür denn ein Beispiel?

für ein 10 Zeilen-Programm dass nicht Hibernate heißt und dich vor dasselbe Problem stellt?
gerne
Java:
public class Test {

public List test() {
  return new ArrayList();
}

}
 

NatGro

Mitglied
wofür denn ein Beispiel?

für ein 10 Zeilen-Programm dass nicht Hibernate heißt und dich vor dasselbe Problem stellt?
gerne
Java:
public class Test {

public List test() {
  return new ArrayList();
}

}

Naja, ich dachte da mehr an das "Gegenstück" dazu. ;)
Also das, was die "List" dann entgegen nimmt sozusagen.
 

NatGro

Mitglied
doch, du weißt es, jedenfalls soweit es relevant ist,
...
ich empfehle, niemals .list() einzeln aufzurufen, sondern über eine statische Methode:
Java:
public static <T>List<T> getList(Query query)
{
    return query.list();
}

hier kann man
List<Integer> myIntList = getList(query);
schreiben, der generische Parameter wird im normalen Code passend ohne Fehlermeldung/ Warnung ...

Oben hattest Du es etwas anders vorgeschlagen, so meinte ich das.
Wir würde das jetzt hier konkret aussehen müssen!?
 
S

SlaterB

Gast
so?
Java:
public class Test {
    public static void main(String[] args)  {
        Test t = new Test();

        // Warning: using raw type, Casten nötig
        List l1 = t.test();

        // nötige Umwandlung, durch SuppressWarnings gerechtfertigt
        @SuppressWarnings("unchecked")
        List<Integer> l2 = t.test();

        @SuppressWarnings("unchecked")
        List<Integer> l3 = t.test();

        @SuppressWarnings("unchecked")
        List<Integer> l4 = t.test();

        // muss man jedesmal schreiben, tausende Male in einem großen Programm
        @SuppressWarnings("unchecked")
        List<Integer> l5 = t.test();


        // kein SuppressWarnings mehr nötig, nur einmal in der statischen Methode
        List<Integer> l6 = getTestList(t);
        List<Integer> l7 = getTestList(t);
        List<Integer> l8 = getTestList(t);
        List<Integer> l9 = getTestList(t);
    }


    @SuppressWarnings("unchecked")
    public static <T>List<T> getTestList(Test t) {
        return t.test();
    }

    public List test() {
        return new ArrayList();
    }
}
 

fastjack

Top Contributor
Parametrisiere doch einfach den Iterator und die Listen mit den Objekten vom Typ Contact die da vorhanden sind.
Java:
Iterator<Contact>, List<Contact>
Dann sparst Du Dir die casterei auf Contact.

Von den ganzen @SuppressWarnings halte ich persönlich nichts.
 

NatGro

Mitglied
Parametrisiere doch einfach den Iterator und die Listen mit den Objekten vom Typ Contact die da vorhanden sind.
Java:
Iterator<Contact>, List<Contact>
Dann sparst Du Dir die casterei auf Contact.

Von den ganzen @SuppressWarnings halte ich persönlich nichts.

Du meinst sicherlich so in etwa, oder?
(Hinweis: Contact ist eine eigene Klasse für meine gespeicherten Personen)
Java:
List <Contact> contacts =  newSession.createQuery("from Contact m order by m.id asc").list();

Nun, das habe ich versucht, das Problem ist allerdings, das ich ja "rechts" auch etwas angeben müsste!?
So wie hier z.B.
Code:
List<Integer> myIntList = new LinkedList<Integer>();

Ich wüsste jedoch nicht wie ich das bei
Code:
List contacts =  newSession.createQuery("from Contact m order by m.id asc").list();
mit der richtigen Syntax schreiben soll und außerdem kommt ja von "newSession.createQuery("from Contact m order by m.id asc").list();" soweit ich weiß nicht nur etwas vom Typ Contact zurück!?
 
S

SlaterB

Gast
wie anfangs schon geschrieben:
welcher Art die Objekte in der Liste sind hängt vom HQL-String ab,
das ist pures Raten im Quellcode, welches zur ClassCastException führen kann, egal wie man es programmiert,
dieser unsichere Schritt ist unumgänglich


ansonsten ist das genau die Situation wie in meinem Beispiel:
> List <Contact> contacts = newSession.createQuery("...").list();
entspricht
> List<Integer> l2 = t.test();
mit nötigen SuppressWarnings, falls die Warnmeldung eingeschaltet ist (man kann sie natürlich auch einfach immer anzeigen lassen)

und wie vorgeschlagen ginge
> List<Contact> contacts = getList(newSession.createQuery("..."));
ohne jede Warning, wenn nur eine entsprechende Methode existiert,
was darin <T>List<T> bedeutet ist eher müßig zu erklären, es sorgt einfach dafür dass es geht
 
Zuletzt bearbeitet von einem Moderator:

NatGro

Mitglied
Ich danke Euch für Eure ganzen Tips und werde es dann mal so probieren.
Wirklich ein super Forum hier! Großes Lob an dieser Stelle!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
S org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: right near Allgemeine Java-Themen 6
P Hibernate Proxy Allgemeine Java-Themen 1
C Hibernate EJB JTA Allgemeine Java-Themen 4
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
Shoox Hibernate / JAXB für Schnittstellen Allgemeine Java-Themen 4
Jay_030 Guice + Hibernate = Probleme? Allgemeine Java-Themen 2
G Hibernate search (Lucene) - Index wird nicht rechtzeitig erzeugt? Allgemeine Java-Themen 2
H Hibernate: @OneToOne Beziehung Allgemeine Java-Themen 4
neurox Tutorial: Hibernate mit MySQL (erste Schritte) Allgemeine Java-Themen 34
P Hibernate oder Java Persistence API? Allgemeine Java-Themen 3
A Spring und Hibernate Allgemeine Java-Themen 2
MQue log4j mit hibernate Allgemeine Java-Themen 3
F Hibernate speichern - Null Allgemeine Java-Themen 5
T Wie Hibernate im Tomcat installieren? Allgemeine Java-Themen 2
M Hibernate frage zur Verbindung Allgemeine Java-Themen 3
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
G Obfuscator und Hibernate! Allgemeine Java-Themen 5
W JBoss,Axis2,Hibernate/JPA,Oracle - EntityManager Problem Allgemeine Java-Themen 4
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
J Hibernate & Java Allgemeine Java-Themen 4
A Hibernate und Swing Allgemeine Java-Themen 2
G Hibernate speichert Daten nur während Session in HSQL-DB Allgemeine Java-Themen 10
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
thor_norsk Eclipse - Fehlermeldung - JavaFX Allgemeine Java-Themen 24
Zrebna Was bedeutet folgende Fehlermeldung...? Allgemeine Java-Themen 1
A Die unerklärliche Fehlermeldung Allgemeine Java-Themen 5
O long Fehlermeldung Allgemeine Java-Themen 8
ReinerCoder Eclipse Fehlermeldung - The constructor Double(double) is deprecated Allgemeine Java-Themen 8
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
N Fehlermeldung beheben Allgemeine Java-Themen 6
J Fehlermeldung bei Ausführung von .jar-Datei Allgemeine Java-Themen 9
M stream.Collectors Fehlermeldung Allgemeine Java-Themen 1
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
M Java-Programminstallation stoppt mit Fehlermeldung Allgemeine Java-Themen 1
C Fehlermeldung Allgemeine Java-Themen 1
M Java Virtual Machine Launcher (Fehlermeldung) Allgemeine Java-Themen 8
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
Shido JDK installieren Eclipse - Fehlermeldung Allgemeine Java-Themen 4
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
K Interpreter-Fehler Java Zahl Raten Spiel- Fehlermeldung mir unbekannt Allgemeine Java-Themen 12
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
G UUencoding bring Fehlermeldung: No beginn line / Missing 'end' line Allgemeine Java-Themen 0
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
0 Lösungsweg Client Server Kommunikation Fehlermeldung ausgeben Allgemeine Java-Themen 12
A Fehlermeldung "No vertex field found" Allgemeine Java-Themen 18
K Fehlermeldung mit jar-Datei Allgemeine Java-Themen 2
C Button geben Fehlermeldung aus Allgemeine Java-Themen 5
Hindi93 Fehlermeldung UnsatisfiedLinkError Allgemeine Java-Themen 8
I Fehlermeldung im zusammenhang mit String Allgemeine Java-Themen 5
hdi JVM kackt ab mit spezieller Fehlermeldung Allgemeine Java-Themen 8
A Jar-File startet ohne Aktion und ohne Fehlermeldung Allgemeine Java-Themen 4
Daniel_L Mac-spezifische Fehlermeldung auf nicht OS-X-Systemen Allgemeine Java-Themen 9
E Datenbank/iBatis Fehlermeldung Allgemeine Java-Themen 4
G RCP Eclipse Fehlermeldung beim export Allgemeine Java-Themen 5
J Was bedeutet diese Fehlermeldung? Allgemeine Java-Themen 4
0 case orphaned Fehlermeldung! Allgemeine Java-Themen 2
V fehlermeldung heap space, endlosschleife??? Allgemeine Java-Themen 4
T Merkwürdige Fehlermeldung Allgemeine Java-Themen 5
D jdk fehlermeldung probleme wegen der partition? Allgemeine Java-Themen 10
P JFreeChart Fehlermeldung Allgemeine Java-Themen 2
@ [Eclipse] Fehlermeldung bei import-Anweisung Allgemeine Java-Themen 3
T Unbekannte Fehlermeldung + Lösung? Allgemeine Java-Themen 4
G Fehlermeldung bei RFC Allgemeine Java-Themen 4
G Nachdem die neuste Version v. Java installiert-Fehlermeldung Allgemeine Java-Themen 22
T Fehlermeldung Allgemeine Java-Themen 4
P Fehlermeldung Allgemeine Java-Themen 15
G Split String Array bringt Fehlermeldung Allgemeine Java-Themen 7
P Fehlermeldung Allgemeine Java-Themen 8
MQue Fehlermeldung Allgemeine Java-Themen 5
P ständige Fehlermeldung im Eclipse Allgemeine Java-Themen 2
E Fehlermeldung Allgemeine Java-Themen 3
M Fehlermeldung! (Problem mit einem Prog) Allgemeine Java-Themen 5
E JExcel- Zugriff auf leere Zellen kommt eine Fehlermeldung Allgemeine Java-Themen 6
D JavaMail SMTP Fehlermeldung Allgemeine Java-Themen 2
D JavaMail Fehlermeldung Allgemeine Java-Themen 4
K log4j - Fehlermeldung Allgemeine Java-Themen 2
T Konsole "Fehlermeldung": error hereerror here Allgemeine Java-Themen 4
B Fehlermeldung von dispatcher.forward abfangen Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
P Fehlermeldung "Die Klasse sun/plugin/javaRunTime kann n Allgemeine Java-Themen 3
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
J Fehlermeldung Allgemeine Java-Themen 5
D Fehlermeldung in .txt speichern Allgemeine Java-Themen 2
S Fehlermeldung Allgemeine Java-Themen 2
P Fehlermeldung beim Speichern eines java files Allgemeine Java-Themen 5
S Fehlermeldung bzgl. VM -> ständiger Absturz Allgemeine Java-Themen 7
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
sokobus Fehlermeldung Allgemeine Java-Themen 25
A Fehlermeldung: cannot be resolved Allgemeine Java-Themen 5
C Frage zur Fehlermeldung Allgemeine Java-Themen 3
G Fehlermeldung "cannot resolve symbol" Allgemeine Java-Themen 7
N Fehlermeldung Allgemeine Java-Themen 7
T Hilfe!!! Fehlermeldung... "unable..." Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben