Netapsys Blog

Aller au contenu | Aller au menu | Aller à la recherche

Mot clé - hibernate

Fil des billets Fil des commentaires

API Hibernate criteria : poser deux critères de recherche sur la même entité dans deux méthodes distinctes

Après pas mal de recherche, j’ai trouvé une solution à une difficulté récurrente :

  • Une méthode X ajoute un critère sur une des tables d’un "join" (exemple order.product.price>0)
  • Une méthode Y ajoute un autre critère sur la même table du "join" (exemple order.product.deleted=false)

Hibernate renvoie une erreur de type QueryException en disant « duplicate association path : product…. » Et nous n’arrivions pas à accéder au premier critère posé par la méthode Y.

C’est finalement une histoire de cast : l’interface criteria n’expose pas la méthode iterateSubCriteria, son implémentation CriteriaImpl, si :

Iterator<Subcriteria> iter = ((CriteriaImpl)crit).iterateSubcriteria();
boolean found = false;
while ( iter.hasNext() ) {
	Subcriteria subcriteria = iter.next();
	if ("product".equalsIgnoreCase(subcriteria.getPath())) {
		subcriteria.add(Expression.eq("deleted", false));
		found=true;
		break;
	}
}
if(!found){
	crit.createCriteria("product").add(Expression.eq("deleted", false));
}

Introduction à Spring MVC

Dans la guerre furieuse des frameworks MVC il y en a un qui se démarque par sa simplicité, sa facilité de prise en main et sa parfaite intégration à Spring : Spring MVC.

Certes Spring MVC n'est pas un framework événementiel comme pourraient l'être jsf, wicket, tapestry ou struts 2. Mais il possède de nombreux points d'extensions et utilisé avec Spring Web Flow il devient un framework très puissant.

Je vous propose ici une introduction des plus simples qui va consister à afficher une page Hello Spring MVC avec le framework Spring MVC.

Puis nous enrichirons progressivement notre application exemple avec de nouveaux tutoriels pour aboutir à l'utilisation de Spring Web Flow avec la gestion d'une transaction longue Hibernate.

Lire la suite...

Hibernate - Utilisation efficace de l'API Criteria

Utiliser l'API criteria plutôt que le langage de requête HQL présente de sérieux avantages. Parmi l'un deux, on peut en considérer un particulièrement interessant : la décoration de requête.

Lire la suite...