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é.
Les Directives sont un pilier du Framework Angular. Extrêmement puissantes et versatiles, elles sont parfois mises de côté par manque de compréhension de leur potentiel. En termes simples, une Directive est une classe annotée avec @Directive, une annotation qui attend principalement une propriété clé : le "selector". Dans cet article, nous allons nous concentrer sur la compréhension du "selector", la façon dont il permet à une directive de cibler des balises HTML spécifiques, et comment maîtriser les différentes formes de sélection (par nom, attributs, classes, etc.) pour une manipulation efficace des éléments dans une application Angular. C’est parti !
La classe Calendar de Java s’avère bien utilie pour pouvoir manipuler des dates.
Tuto : PL/SQL – Comment gérer les erreurs