2010-09-24 13 views
1

est-il possible de modéliser une référence à "any" (entité) avec JPA? Semblable à une référence de type Object en Java, qui peut contenir n'importe quel objet.Référence "à tout" avec JPA

Merci pour votre réponse,

Dominik

Répondre

2

Vous devriez penser à la représentation de la référence dans la base de données.

  • Si la référence est représentée par une clé étrangère unique, la colonne référencée doit être garantie unique pour toutes les entités référencées possibles. Dans JPA, il est possible uniquement pour les entités dans la hiérarchie d'héritage, de sorte que vous obtiendrez une référence à la racine d'une hiérarchie d'entités d'héritage au lieu de Object.
  • La référence peut être représentée par une paire de valeurs de type entité référencée <, clé étrangère >. Ce cas n'est pas pris en charge par JPA simple, mais pris en charge dans Hibernate par @Any annotation propre à Hibernate.
+0

Est-il possible d'étendre JPA avec un résolveur de référence personnalisé, ce qui ferait plus ou moins la même chose que @Any de Hibernate? Je ne pense pas que ce serait une bonne idée de mélanger les entités JPA et Hibernate, n'est-ce pas? – raymi

+0

@raymi: Il n'y a pas besoin de le faire, les annotations Hibernate fonctionnent bien avec JPA. – axtavt

0

Selon DataNucleus ce n'est pas possible (recherche dans ce pour java.lang.Object): http://www.datanucleus.org/products/accessplatform_1_1/jpa/types.html

Pour JDO nous avons présenté notre notre objet -comme la classe abstraite appelée Sujet qui est annotée pour la persistance et qui en étend tous les autres objets persistants. Cela fonctionne au sein de JDO et je pense que cela devrait aussi fonctionner à l'APP.