2017-09-05 2 views
1

J'ai un ensemble d'entités. Lors de l'utilisation d'Hibernate 4, les tables sont créées avec des colonnes id identifiées comme identité alors que lors de l'utilisation d'hibernate 5, les colonnes id ne sont pas marquées comme identité et les séquences sont également générées. Lorsque vous utilisez Hibernate 5 avec des objets de base de données préexistants et validez le paramètre, l'application échoue en disant que les séquences ne sont pas présentes même si les tables ont des colonnes identifiées comme identité.Hibernate 5 crée une table avec ID non marqué comme IDENTITY

Pourquoi y a-t-il une différence de comportement entre les hibernates 5 et 4?

Est-il possible de migrer vers Hibernate 5 sans changer les entités et les objets de base de données préexistants?

Répondre

0

Comme indiqué dans le Migration Guides, Hibernate 5 est passé aux nouveaux générateurs d'identifiants.

Un effet secondaire est que, pour GenerationType.AUTO ce qui était IDENTITY comme identifiant par défaut, maintenant vous obtenez l'identificateur TABLE à la place. Consultez le numéro HHH-11014 Jiraa pour plus de détails.

Maintenant, pour utiliser les anciens générateurs d'identifiant, vous pouvez simplement définir la propriété de configuration hibernate.id.new_generator_mappings-false:

<property 
    name="hibernate.id.new_generator_mappings" 
    value="false" 
/> 

Cela devrait le faire.