Générateur de séquence Hibernate

De Jérôme Meillant dans Technique

25 jan 2013

Comment forcer Hibernate à utiliser les nouvelles implémentations de générateur de la meilleure façon lorqu’on insère des données depuis un schéma externe.

Par défaut Hibernate choisi d’instancier la classe org.hibernate.id.SequenceHiloGenerator pour générer les IDs d’entités ayant déclaré une annotation du style :

...
@SequenceGenerator(name="jetonSequence", sequenceName="SEQ_T_ENTITE", schema="DROITS")
public class MonEntite extends AbstractEntity {
...

Le problème est qu’un bug subsiste dans Hibernate et qu’il ne sera pas corrigé (car SequenceHiloGenerator est déprécié dans les dernières versions d’hibernate). En effet l’attribut schema n’est pas pris en compte ce qui peut poser des problèmes lors de l’insertion de données depuis un schéma externe.

Pour corriger le problème il faut forcer Hibernate à utiliser les nouvelles implémentations de générateur en positionnant la variable hibernate.id.new_generator_mappings à true.
Exemple:

<util:properties id="hibernateProperties">
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect </prop>
<prop key="hibernate.show_sql">${showSql}</prop>
<prop key="hibernate.id.new_generator_mappings">true</prop>
</util:properties>

Commentaire

+ neuf = 14

iMDEO recrute !

REJOIGNEZ-NOUS

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

Voir les annonces