2009-10-19 7 views
1

Nous avons strictement défini quelles relations sont CascadeType.MERGE dans notre application. Cela joue dans notre vérification de version (verrouillage optimiste). Ainsi, nos définitions CascadeType ont parfois MERGE et parfois non. Tout cela est parfait pour notre application OLTP. Cependant, nous avons également besoin de charger des données (très bien pour le faire hors ligne) dans lesquelles les relations peuvent être différentes. Ce que je voudrais faire est de dire à jpa (ou eclipselink) de traiter chaque relation comme CascadeType.MERGE pendant ce chargement par lots. En d'autres termes, je veux qu'eclipselink ignore nos annotations pendant ce chargement par lots. Est-ce possible?Programatically faire toutes les relations CascadeType.MERGE

Merci,

Ben

Répondre

2

La norme définit JPA deux façons de configurer les entités - annotation, que tout le monde connaît, et les fichiers XML. La définition dans XML doit remplacer la définition d'annotation. Cela signifie que vous avez deux options:

  • écrire les fichiers XML à la main
  • Ecrire un petit programme qui liront vos entités et (par réflexion) générer le fichier XML.

Vous pouvez trouver des exemples pour le fichier orm.xml here

+0

Si je ne reçois pas d'autres réponses, je vais l'accepter. "Ecrire un petit programme qui lira vos entités et (par réflexion) générer le fichier XML." - J'espérais que je n'avais pas à faire quelque chose de si moche. Plus j'utilise JPA, plus je me rends compte à quel point il manque! – andersonbd1

+0

Vous pouvez toujours le faire à la main ... C'est le prix de la flexibilité. Si nous pouvions avoir ActiveRecord comme ruby, nous aurions moins de flexibilité à configurer la relation entre les objets et la base de données (et vous pouvez argumenter dans les deux sens si c'est bon ou mauvais) –

+0

Je ne suis pas d'accord que c'est le prix de la flexibilité. Je crois que c'est une fonctionnalité possible qui n'a tout simplement pas été mise en œuvre. – andersonbd1

Questions connexes