Hibernate version 5.2 -> beaucoup de méthodes de Requête déprécier?
Je suis nouveau sur mise en veille prolongée.
Je vais essayer d'obtenir une liste de prénom et nom de tous les administrateurs.
Il y a deux avertissements dans mon code ci-dessous. J'ai déjà essayé de chercher beaucoup en ligne.
1) la Requête est une crue de type. Références de type générique de la Requête doit être paramétré.
2) La méthode list() à partir du type de Requête est obsolète.
public List<Object> loadAllAdmins() {
List<Object> allAdmins = new ArrayList<Object>();
try {
HibernateUtil.beginTransaction();
Query q = currentSession.createQuery("SELECT admin.firstName, admin.lastName from AdminBean admin");
allAdmins= q.list();
HibernateUtil.commitTransaction();
} catch (HibernateException ex) {
System.out.println("List<AdminBean> loadAllPersons: HibernateException");
}
return allAdmins;
}
Mais j'voir l'exemple de code comme celui-ci sur le web. Comment dois-je résoudre ces deux problèmes?
Mise à jour
J'ai juste essayé d'utiliser des Critères comme le suggère. Il dit aussi la liste() la méthode est de rendre caduque pour les Critères... Il semble que beaucoup de méthodes sont déprécier pour les Requêtes et les Critères, y compris uniqueResult() et d'autres... Toute suggestion comment devrais-je les remplacer?
OriginalL'auteur Chenya Zhang | 2016-07-19
Vous devez vous connecter pour publier un commentaire.
Les avertissements venus de "l'Inférence de Type".
J'ai eu le même problème. Cependant, j'ai trouvé une solution sans "SuppressWarnings".
Récemment, j'ai trouvé un moyen plus court de code les mêmes choses sans l'inférence de type.
Espère que cela aide.
1. Pas de. Comme je l'ai dit, Le supprimer avertissement est supprimé. 2. Oui, mais je pense que ce serait la peine. C'est généralement la peine d'essayer de travailler sur une façon d'éviter les avertissement plutôt qu'en les supprimant.
OriginalL'auteur Pika
De ne pas importer les
QUERY
deorg.hibernate
(Comme Obsolète maintenant). Au lieu de l'importation “org.mise en veille prolongée.requête” .Eclipse de référenceOriginalL'auteur Aniket Warey
J'ai testé d'autres méthodes de hibernate javadoc et je suis venu avec
getResultList()
méthode de laTypedQuery<T>
interface. Exemple:La différence est que le retour de type de
createQuery
n'est pasQuery
mais un subinterface appeléTypedQuery<T>
. Parce que c'est tapé, il fixe également les "Requête est une crue de type" avertissement.Avec cette solution, vous pouvez obtenir un de Sécurité de Type avertissement, qui peut être résolu par la coulée de chaque objet de façon explicite ou par l'ajout de
@SuppressWarnings("unchecked")
Concernant les critères de voir hibernate guide de l'utilisateur
Néanmoins, je me demande pourquoi les tutoriels-page d'hibernate n'est pas ajustée.
createQuery()
n'est pas obsolète etgetResultList()
n'est pas déconseillée.voir docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/query/....OriginalL'auteur Johannes H
Avez-vous essayé d'utiliser des critères?
Voir cet exemple:
createCriteria()
est@Deprecated
en veille prolongée 5.2.OriginalL'auteur A. Horst
Selon Créer Une Requête Hibernate , il existe deux types de
createQuery()
méthodes :Créer une Requête de l'instance pour le HQL/chaîne de requête JPQL.
Créer un tapé la Requête de l'instance pour le HQL/chaîne de requête JPQL.
Dans votre cas, vous avez utilisé la première
Query
et list() la méthode est@deperecated
.Vous pouvez l'utilisateur
getResultList()
au lieu delist()
pour Plusieurs résultats :Pour seul résultat que vous pouvez utiliser
getSingleResult()
:PS: j'ai utilisé
Object
en fonction de votre typeObject
,vous pouvez convertir le résultat selon le type utilisé.OriginalL'auteur Menai Ala Eddine
Bien que la fin de la partie, mais peut être intéressant de noter la surcharge méthode createQuery (pour éviter les mises en garde en tout):
OriginalL'auteur sharmaap