@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Foo
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class BarFoo extends Foo
mysql> desc foo;
+---------------+-------------+
| Field | Type |
+---------------+-------------+
| id | int |
+---------------+-------------+
mysql> desc barfoo;
+---------------+-------------+
| Field | Type |
+---------------+-------------+
| id | int |
| foo_id | int |
| bar_id | int |
+---------------+-------------+
mysql> desc bar;
+---------------+-------------+
| Field | Type |
+---------------+-------------+
| id | int |
+---------------+-------------+
Est-il possible de spécifier la colonne barfo.foo_id comme colonne jointe?Comment spécifier une colonne différente pour une annotation JPA @Inheritance
Etes-vous autorisé à spécifier barfoo.id comme @Id de BarFoo puisque vous remplacez le getter/seeter de la classe Foo? Je comprends les schémas derrière cette relation (ou du moins je pense que je le fais) et je suis d'accord avec eux. La raison pour laquelle je veux un champ d'identification explicite pour BarFoo est exactement parce que je veux éviter d'utiliser une clé jointe (foo _id, barre _id) lors de l'interrogation de BarFoo (s) ou lors d'une contrainte "strong". (comme le dit Ruben)
Interrogation pour BarFoo et Foo peut être fait séparément, et les contraintes sur l'identification peut être plus fort pour BarFoo que pour Foo, tout en ayant la même clé. Je ne vois pas directement l'utilisation de choisir une stratégie d'héritage jointe et ayant des ID différents pour la superclasse et la sous-classe. – Ruben
Puisque barfoo.id ne sera pas unique, comment pouvez-vous demander un BarFoo explicite ou l'utiliser comme une contrainte fk dans une autre table? – qnoid
Puisque barfoo.id ne sera pas unique, comment pouvez-vous demander un BarFoo explicite? Lorsque vous interrogez avec HQL, vous pouvez simplement faire une requête pour BarFoo au lieu de Foo. Lorsque vous interrogez à partir de SQL, vous pouvez utiliser une jointure entre les tables BarFoo et Foo. – Ruben