Je suis actuellement coincé avec ce qui semble être un problème très simple, mais je ne peux tout simplement pas sembler trouver un moyen de trouver: p>
J'ai 2 identiques i> Tables: P>
Les champs des deux sont identiques et j'ai une classe - J'essaie de cartographier deux entités différentes (une pour chaque table) à la classe ci-dessus. Dans le vieux monde, j'aurais créé deux fichiers J'essaie d'utiliser des annotations actuellement pour obtenir la même chose, mais n'avait pas de chance jusqu'à mapper les 2 entités à une classe Single i>. Est-ce possible? p>
Je suis actuellement en train d'utiliser une approche différente dans celle que j'ai extraite tous les champs communs (noms de colonne identiques) dans un
transaction code> utilisé pour représenter tous les champs appropriés dans les tableaux. p>
hbm.xml code>, un pour chaque table et cartographier les deux à
transaction code>. J'utiliserais ensuite le nom de l'entité pendant la persistance pour vous assurer que l'objet est persisté dans la table correcte, en fonction de la situation. P>
@mapsuperclass code> et ont créé deux classes distinctes (une pour chaque entité) qui s'étendez de la super classe (ces classes ont simplement les mêmes champs avec différents noms de colonnes, le cas échéant). P>
3 Réponses :
Utilisation @mapsuperclass, vous procédez comme suit:
@MappedSuperclass public class Transaction ... @Entity @Table(name="tbl_creditcard_approved_txns") public class DeclinedTransaction extends Transaction ... @Entity @Table(name="tbl_creditcard_declined_txns") public class ApprovedTransaction extends Transaction ...
Les2, merci, pour la réponse. Ce que vous avez suggéré est l'approche que j'ai prise actuellement. Comme vous l'avez observé, je me demandais si il est possible de mapper une entité à deux tables différentes.
Si je déplace une rangée d'une table à l'autre, comment puis-je vous assurer que l'ID de la rangée est maintenu de la même manière?
Cela ressemble à une mauvaise idée, mais je ne suis pas tout à fait sûr pourquoi :) C'est juste contre mes instincts. Quel est le cas d'utilisation pour garder l'ID de ligne identique?
L'autre moyen de le faire serait d'utiliser une table partitionnée sur la couche de base de données qui rendrait alors visible une table unique à votre code Java. P>
Ceci est probablement la voie à suivre en règle générale, plus vous faites partitionnement intelligent, plus votre requête peut être plus rapide. P>
Vous devez utiliser deux unités de persistance différentes ou deux entités distinctes. Cela a déjà été répondu à ici A >. P>
duplicaté possible de JPA, comment utiliser la même classe (entité) pour mapper différentes tables?
Pascal, c'est bien l'intention, la seule différence étant que je voudrais que deux entités différentes soignées à la même classe. Contrairement à la JPA, dans Hibernate, les classes peuvent être disparates des entités. En substance, cependant, j'essaie vraiment de cartographier une classe à deux tables.