Hibernate 5.2-Version - Viele Abfragemethoden sind veraltet?

9

Ich bin neu in Hibernate.

Ich versuche eine Liste mit Vornamen und Nachnamen aller Administratoren zu erhalten.

In meinem folgenden Code gibt es zwei Warnungen. Ich habe bereits versucht, viel online zu suchen.

1) Abfrage ist ein Rohtyp. Verweise auf den generischen Typ Query sollten parametrisiert werden.

2) Die Methode list () vom Typ Query ist veraltet.

%Vor%

Aber ich sehe Beispielcode im ganzen Web. Wie soll ich diese beiden Probleme lösen?

Aktualisieren

Ich habe gerade versucht, Kriterien wie vorgeschlagen zu verwenden. Es sagt auch, dass die list () -Methode für Criteria veraltet ist ... Es scheint, dass viele Methoden sowohl für die Abfrage als auch für die Kriterien veraltet sind, einschließlich uniqueResult () und andere ... Irgendwelche Vorschläge, wie ich sie ersetzen sollte?

    
Chenya Zhang 19.07.2016, 14:01
quelle

6 Antworten

9
%Vor%

Die Warnungen stammen von "Typ Inference".

Ich hatte das ähnliche Problem. Ich habe jedoch eine Lösung ohne "SuppressWarnings" gefunden.

Kürzlich habe ich einen kürzeren Weg gefunden, die gleichen Dinge ohne Typinferenz zu codieren.

%Vor%

Ich hoffe, es hilft.

    
Pika 27.09.2016, 07:46
quelle
6

Importieren Sie QUERY nicht von org.hibernate (wie es jetzt veraltet ist). Importieren Sie stattdessen aus "org.hibernate.query". Eclipse-Referenz

    
Aniket Warey 11.12.2016 13:35
quelle
3

Ich testete andere Methoden von Hibernate Javadoc und ich kam mit getResultList() Methode der TypedQuery<T> Schnittstelle. Beispiel:

%Vor%

Der Unterschied besteht darin, dass der zurückgegebene Typ von createQuery nicht Query ist, sondern eine Subschnittstelle namens TypedQuery<T> . Da es typisiert ist, behebt es auch die Warnung "Abfrage ist ein Rohtyp".

Mit dieser Lösung erhalten Sie möglicherweise eine Warnung Typ Sicherheit , die entweder durch explizites Umwandeln jedes Objekts oder durch Hinzufügen von @SuppressWarnings("unchecked")

behoben werden kann

Zu den Kriterien siehe Winterschlaf-Benutzerhandbuch

Trotzdem wundere ich mich, warum die Tutorial-Seite von Hibernate nicht angepasst wird.

    
Johannes H 04.08.2016 11:56
quelle
0

Haben Sie versucht, Kriterien zu verwenden?

Siehe das Beispiel:

%Vor%     
A. Horst 19.07.2016 14:36
quelle
0

Nach Hibernate Create Abfrage , es gibt zwei Arten von createQuery() Methoden:

%Vor%

Erstellen Sie eine Abfrage-Instanz für die angegebene HQL / JPQL-Abfragezeichenfolge.

%Vor%

Erstellen Sie eine typisierte Query-Instanz für die angegebene HQL / JPQL-Abfragezeichenfolge.

In Ihrem Fall haben Sie die erste Query und list () -Methode @deperecated verwendet.

Sie können getResultList() anstelle von list() für mehrere Ergebnisse verwenden:

%Vor%

Für ein einzelnes Ergebnis können Sie getSingleResult() :

verwenden %Vor%

PS: Ich habe Object basierend auf Ihrem Typ Object verwendet, Sie können das Ergebnis nach dem verwendeten Typ umwandeln.

    
Menai Ala Eddine 30.03.2018 17:22
quelle
0

Obwohl es zu spät zur Party ist, kann es aber sinnvoll sein, die überladene createQuery-Methode zu beachten (um Warnungen vollständig zu vermeiden):

%Vor%     
sharmaap 03.04.2018 16:29
quelle

Tags und Links