2012-03-02 5 views
0

J'essaie de conserver une table en utilisant un fichier de mappage hibernate xml avec le champ id défini comme access = "noop". Je le fais parce que je ne veux pas que le champ de clé primaire soit dans le fichier de classe. Les classes que je persiste proviennent d'une bibliothèque tierce et si je les change, ce sera un cauchemar de maintenance lorsque la bibliothèque tierce sera mise à jour. J'espérais que je pourrais persister les relations entre les objets sans altérer les fichiers de classe java.Hibernate noop id clés primaires

à savoir

<hibernate-mapping> 
<class name="blah" table="blah"> 
     <id name="blah_id" type="long" access="noop" > 
      <column name="BLAH_ID" /> 
      <generator class="native" /> 
     </id> 
     <property name="value" type="double"> 
      <column name="VALUE" /> 
     </property> 
</class> 
</hibernate-mapping> 

Malheureusement, cela ne fonctionne pas tout à fait, les demandes spécificateur d'accès noop qui hibernent jamais accéder au champ mais hibernent essaie toujours d'écrire une valeur là quand la sauvegarde fonction retourne provoquant l'erreur suivante;

identifiant d'une instance de third.party.object a été modifié de 2 à null

Je pourrais écrire un wrapper pour la troisième bibliothèques partie, héritant toutes les classes et en ajoutant les champs pour les relations, mais j'étais J'espère vraiment une meilleure solution.

Il semble raisonnable de vouloir garder les pks hors des classes. Comment je fais ça?

Des idées?

Répondre

0

Je pense que les classes de composants sont ce que vous cherchez plus tôt.

Questions connexes