J'ai un curieux casse-tête avec un mappage relationnel objet, en utilisant Java et Hibernate.Mappage d'héritage Hibernate inhabituel
Nous avons un schéma existant qui ressemble à ceci:
create table foo (id int8, /* ... */ primary key (id));
create table bar (id int8, foo int8, /* ... */ primary key (id));
alter table bar add constraint fk_foobar foreign key (foo) references foo;
Normalement, vous mapper ce en utilisant une relation ManyToOne
.
class Foo { /* ... */ }
class Bar { private Foo foo; /* ... */ }
Mais l'un des gars de mon équipe veut mapper ce dans une relation d'héritage:
class Foo { /* ... */ }
class Bar extends Foo { /* ... */ }
Est-il possible de retirer ceci avec Hibernate?
Edit: Le point important est que la table bar
dispose d'une clé étrangère foo
, qui est distincte de la colonne d » identité bar
.
J'utilise NHibernate (port de mise en veille prolongée) avec C# et la réponse est oui. Il y a des exemples dans les docs de NHibernate et je suis sûr que la même chose existe pour Hibernate – David
avez-vous résolu votre problème? s'il vous plaît fournir des commentaires. – Bozho
Je suis assez sûr que la réponse est non. Je parie que Hibernate est câblé de sorte que si vous avez une relation d'héritage, la clé primaire dans la table de la classe dérivée doit être une clé étrangère à la table de la classe de base. – leedm777