Comment mettre en oeuvre la clause SQLLangage permettant de communiquer avec une base de données. WHERE avec Hibernate 4 ?
Comment mettre en oeuvre la clause SQLLangage permettant de communiquer avec une base de données. WHERE avec Hibernate 4 ?
Le principe
Si vous savez faire une requête simple avec Hibernate 4, vous êtes prêt à mettre en oeuvre une clause WHERE. Pour cela, il faut utiliser la classe javax.persistence.Predicate : cette classe représente une condition ou une série de conditions.
Les fonctions permettant d’appeler les opérateurs sont fournies par la boîte à outils qu’est le CriteriaBuilder. Ces fonctions prennent en paramètre des Expression<?> et les valeurs de comparaison, et renvoient des objets Predicate.
En pratique
Exemple : la commande ayant le numéro « CMD0001 » :
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<
Commande> criteriaQuery = builder.createQuery(Commande.class);
Root<
Commande> root = criteriaQuery.from(Commande.class);
criteriaQuery.select(root);
Predicate predicate = builder.equal(root.get(Commande_.numero), "CMD0001");
criteriaQuery.where(predicate);
TypedQuery<
Commande> typedQuery = entityManager.createQuery(criteriaQuery);
List<
Commande> result = typedQuery.getResultList();
Si à l’inverse vous voulez les commandes qui n’ont pas ce numéro, donc si vous voulez utiliser l’opérateur != ou <>, appelez la fonction notEqual() à la place d’equal().
Plusieurs conditions
Si votre clause WHERE doit contenir plusieurs conditions, le CriteriaBuilder fournit les fonctions and() et or() qui mettent en oeuvre les mots-clés correspondant.
Exemple : :
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<
Commande> criteriaQuery = builder.createQuery(Commande.class);
Root<
Commande> root = criteriaQuery.from(Commande.class);
criteriaQuery.select(root);
Predicate predicate = builder.equal(root.get(Commande_magasin).get(Magasin_.id), 3);
predicate = builder.and(predicate, builder.equal(root.get(Commande_.client).get(Client_.id), 23));
criteriaQuery.where(predicate);
TypedQuery<
Commande> typedQuery = entityManager.createQuery(criteriaQuery);
List<
Commande> result = typedQuery.getResultList();
Remarque
Attention à l’ordre dans lequel vous appelez les fonctions and() et or() : si vous avez plusieurs conditions imbriquées qui nécessitent des parenthèses (par exemple : « … OR … (… AND …)), imbriquez les appels de méthodes de la même manière pour obtenir le résultat souhaité.
3 techniques pour trouver le bon développeur pour votre projet !
Bienvenue dans l’univers fascinant des méthodes HTTP, les véritables héros de la communication sur le web ! Que vous soyez développeur web ou simplement curieux, comprendre ces méthodes vous permettra de maîtriser les interactions entre les navigateurs et les serveurs. Dans cet article, nous allons explorer les différentes méthodes HTTP, découvrir leurs utilisations spécifiques et voir comment elles peuvent transformer votre manière de développer des applications web. Prêt pour le voyage ? Allons-y !
Comprendre comment gérer correctement les exceptions est essentiel pour garantir la robustesse de vos applications. Cet article explore les principes fondamentaux de la gestion des exceptions en .NET et vous montre une façon de tout centraliser.