2010-02-25 5 views
3

J'espère que quelqu'un peut m'aider à trouver une réponse.Hibernate: Plusieurs-à-un utilisant la formule

Je travaille avec une base de données existante et je ne peux pas modifier les tables préexistantes, car d'autres applications en dépendent. J'ai trois principales tables existantes: A, B, C.

A a une colonne avec référence à B (plusieurs à une relation). Le problème est qu'il devrait avoir une relation à C pas à B. J'ai donc créé un mappage * -1 BC.

Tables: A,B,C,BC (all have ID field) 
A-B many to one 
B-C many to one through BC 
Needed:A-C without altering A,B or C 

Je ne veux pas avoir des entités java pour B ou BC, juste A et C et A doit avoir un champ Ac

Jusqu'à présent, j'ai essayé d'utiliser l'annotation @Formula sans résultat .

class A{ 
    @ManyToOne 
    @Formula(value="select BC.c from BC where BC.b = b") 
    private C c; 
} 

ce produit l'instruction SQL suivante: (pourquoi la formule a complètement ignoré)

select this_.c_ID from A this_ 

Il échoue évidemment parce qu'il n'y a pas de colonne C_Id dans le tableau A.

Retrait de l'annotation @ManyToOne produit:

select (select BC.c from BC where BC.b = this_.b) as formula_0 from A this_ 

Ce serait parfait, sauf Hibernate attend une valeur BINARY (la sérialisation de la classe C?) Et jette une exception lors de la coulée du numériques.Elle reçoit.

Cet ID devrait être suffisant pour le chargement paresseux, mais comment puis-je lui dire de le faire? toute utilisation de @ManyToOne casse la formule.

Comment puis-je obtenir le lien A-C sans modifier les tables A, B, C ou créer les classes Java B ou BC?

Merci pour toute information, Dan

Répondre

1

Cela semble très comme ça bug, malheureusement pas de solution prête à l'aide d'annotations, semble que vous pourriez obtenir travailler avec fichier de mappage XML pour ces classes bien.

+0

Oui, vous avez raison, il semble que le même problème. J'aurais vraiment aimé garder tous les mappings dans les annotations. Pour l'instant, j'ai ajouté les classes B et BC, mais je pourrais changer pour le mappage XML juste pour cette classe, car ce serait plus efficace. –

0

Ceci est supposé fonctionner dans Hibernate 3.5.0-Beta-2 + (HHH-4382 a été corrigé).

Questions connexes