Sélectionnez un élément à partir de la base de données avec Spring Hibernate Sessionfactory
C'est dans ma DAO:
public List<Weather> getCurrentWeather() {
return sessionFactory.getCurrentSession().createQuery("from Weather").list();
}
Il obtient tous les éléments du tableau de la Météo. Mais disons que je veux faire quelque chose comme ça(je veux seulement un élément de la table de la Météo):
public Weather getCurrentWeather() {
return sessionFactory.getCurrentSession().createQuery("from Weather where id = 1").list(); //here should be something else than list()
}
Je sais qu'il ne doit pas être list()
à la fin, mais que dois-je y écrire, pour obtenir un seul objet?
OriginalL'auteur Jaanus | 2011-09-16
Vous devez vous connecter pour publier un commentaire.
Si vous avez un identifiant, il vous suffit d'utiliser get:
Si vous avez besoin de faire une requête, oui vous aurez à saisir le haut de l'ensemble de résultats, ou vous pouvez utiliser
uniqueResult()
sur la requête.Oui, vous le lancez. Il n'y a pas une telle chose comme la compilation de sécurité de type avec des requêtes. Comment le compilateur censé savoir ce que votre HQL déclaration va créer en fin de compte?
Mais cela fonctionne quand j'ai quelque chose d'autre que l'IDENTIFIANT, par exemple un champ de type entier?
obtenez de l'est seulement pour les ids. Il est conseillé de l'utiliser autant que possible, car il va dans le cache L1. Qui peuvent être hors de propos si vous avez serré la demande étendues et sont sûrs de n'obtiendra qu'une fois par session, de toute façon. Si vous voulez éviter le casting, vous pouvez utiliser les Critères de l'API pour construire votre requête au lieu d'écrire les requêtes HQL.
Le Casting est nécessaire avec la première option? Ne pas le
(Weather.class, 1)
chose retour de la Météo de la classe?OriginalL'auteur Affe
Est-il quelque chose de mal avec l'obtention d'une liste? 🙂 Même si vous savez qu'il ya seulement 1 hibernate ne peut pas supposer que. Obtention d'une liste est plus sûr de toute façon!
Eh bien, c'est vraiment à vous, mais si vous voulez vous répertorie être retourné à votre vue tout le temps, je le ferais dans le DAO. Aussi, la méthode nom l'indique vous voulez juste le temps de sorte que d'autres personnes plus tard à l'aide de votre code peut être confus quant à pourquoi une liste est retourné
OriginalL'auteur Brian Colvin
Vous devez utiliser l'API des Critères ci-dessous:
OriginalL'auteur Anuj Panwar