09juil. 2013

NHibernate : Object with id: XXX was not of the specified subclass

J'ai récemment eu un problème de mapping avec NHibernate. L'idée était de mapper avec les attributs NHibernate une collection d'objet qui hérite d'une classe abstraite en utilisant un table-per-class-hierarchy.

Un discriminateur est déclaré dans le mapping de la classe abstraite - celui ci est ensuite valué dans les classes filles. Cependant, lors de la récupération de données, j'obtenais une erreur du type :

Object with id: XXX was not of the specified subclass

Lire la suite...

23mai 2013

NHibernate : faire un distinct en utilisant l'API Criteria

Un petit code sample pour faire un distinct en utilisant l'API Criteria de NHibernate. Nous partons du principe qu'une instance de criteria a été récupérée depuis la session.

Lire la suite...

24janv. 2012

NHibernate : mapper une clé primaire composite avec les NHibernate attributes

Une clé primaire composite est une clé composée de plusieurs colonnes. Voici comment mapper une clé composite avec les NHibernate Attribute.

Lire la suite...

08nov. 2011

NHibernate : identity non créée lors de la création du schéma avec SchemaExport

A l'occasion de mon retour sur NHibernate j'ai du faire face à la génération du schéma de la base de données à partir de l'outil SchemaExport. Cet outil permet entre autre de transformer le mapping de vos classes en script SQL.

J'ai choisi d'utiliser les au fichier XML. Je ne voulais pas avoir une multitude de fichier hbm.xml à gérer.

Lire la suite...

17mar. 2011

NHibernate/Hibernate : Gérer la suppression dans une table parent

Etre abandonné par ses parents, c'est jamais très drôle. Surtout si une clé étrangère vous y relie. Votre base de données crie au scandale et vous rapelle qu'il y a des règles en ce bas monde ; enfin des contraintes exactement.

Voyons comment gérer la suppression d'une ligne référencée par une contrainte clé étrangère avec NHibernate. En effet dans certains cas, on peut-être amené à supprimer la ligne parente et vouloir conserver la ligne enfant.

Lire la suite...