2011-05-06 3 views
2

J'ai une question que si nous créons une table dans la base de données, c'est-à-dire ne pas avoir de clé primaire (toutes les valeurs de colonnes sont nulles).java hibernate eclipse xml - utiliser une entité sans clé primaire

Impossible de faire la correspondance sans champ ID dans Hibernate O/R Mappage, c'est-à-dire le fichier .hbm.xml lorsque vous travaillez avec hibernate.

Le problème auquel je fais face est mon fichier .hbm.xml sans champ ID n'est pas validé.

J'ai obtenu les réponses de vous tous, mais j'ai une question qui peut nous employer le mot-clé transitoire préfixé à la variable d'identification dans la classe d'entité afin de ne pas maintenir cette valeur dans la base de données?

+0

Est-ce que cette table n'est liée à aucune autre table d'une manière ou d'une autre? – yogsma

+0

Comme je sais que non, vous ne pouvez pas le créer sans ID car Hibernate utilise la clé primaire comme méthode de conservation de l'identité. –

Répondre

3

La seule vraie solution consiste à réparer votre modèle de données brisé. Une entité qui n'a pas de clé primaire n'est pas une donnée relationnelle, donc vous ne pouvez pas vous attendre à ce qu'un produit ORM sache comment le gérer.

Et comment Hibernate effectuera la mise à jour sans une clé primaire ou une ligne unique?

Merci.

0

Vous ne pouvez pas faire cela en hibernation. Et vous ne devriez pas le faire de toute façon. Les bases de données vous avertissent qu'il n'est pas conseillé de ne pas avoir de clé primaire.

Si vraiment vous ne disposez pas d'un ensemble de colonnes qui forment une clé unique, vous avez deux options:

  • ajouter une clé primaire auto-incrément (préféré)
  • utilisation JDBC brute pour obtenir les données de cette table particulière. Vous pouvez le faire avec la méthode session.doWork(..) d'hibernate.
Questions connexes