2017-09-22 1 views
4

Je prévois d'intégrer ORM dans mon projet, j'ai donc utilisé le projet JPA d'eclipse pour générer des classes d'entités à partir d'anciennes bases de données. Au total, 168 classes d'entités ont été générées et c'est très bien. Mais dans certaines contraintes comme nullable, unique ne génèrent pas automatiquement.comment générer une contrainte unique dans la classe d'entité en utilisant jpa project eclipse

Par exemple, je besoin de quelque chose comme ceci: -

@Column(name="USER_NAME",unique = true) 
private String userName; 

mais après des entités de production d'automobiles est-il pas contrainte unique dans le code. Comment puis-je y parvenir simplement?

des suggestions seront utiles.

+0

Si vous ne parvenez pas à utiliser le projet JPA d'Eclipse, vous pouvez essayer d'utiliser le reverse engineering dans Hibernate/JBoss Tools. Il y a quelques articles en ligne qui vous expliquent comment procéder étape par étape, par exemple. https://www.mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools/ –

+0

La propriété 'unique' de l'annotation' @ Column' est uniquement utilisée dans la génération DDL, c'est-à-dire dans les cas où vous génèrent le schéma de base de données à partir de vos entités JPA mappées. Cela n'a absolument aucun effet sur le code. Comme vous allez dans le sens inverse, il est inutile de l'avoir: https://stackoverflow.com/questions/30460596/jpa-column-unique-true-what-is-really-point-of-having-unique- attribut –

Répondre

1

@Unique représente un index unique qui empêche les valeurs en double dans le champ indexé. Une exception PersistenceException est lancée sur commit (ou flush) si différentes entités ont la même valeur dans un champ unique (similaire au comportement des clés primaires). Dans votre exemple:

@Unique 
 
@Column(name="USER_NAME") 
 
private String userName;

+0

Cela ne répond pas à une question. –

1

La contrainte unique ne sera créé si vous créez la table. Si la table existe déjà, seules les nouvelles colonnes seront ajoutées lors des mises à jour DDL. Vous devez donc soit supprimer la table manuellement, soit définir la valeur javax.persistence.schema-generation.database.action sur drop-and-create.

+0

Cela ne répond pas non plus à une question. –

2

Vérifiez votre version JPA dans votre éclipse, si vous avez trouvé les versions les plus récentes, mettez-la à jour. Le dernier JPA crée toutes les contraintes que nous avons définies dans la table de base de données.
espérons que cela vous aide.

Find Latest JPA on New "JPA project screen"

1

Vous devez utiliser les outils Hibernate de Jboss, qui vous permettent de faire une meilleure ingénierie inverse.

http://hibernate.org/tools/

Il y a un tas de tutoriels en dehors qui expliquent comment utiliser les outils de mise en veille prolongée.