Bonjour,
Je souhaite utiliser des "component" hibernate
J'ai une classe personne et une classe adresse
J'ai donc 2 classes et deux tables, dans Personne j'ai un composant Adresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 @Entity @Table(name = "PERSONNE") @SecondaryTable (name= "ADRESSE", pkJoinColumns = {@PrimaryKeyJoinColumn (name="idPersonne")}) public class Personne { @Embedded @AttributeOverrides( { @AttributeOverride( name = "rue", column = @Column(name="RUE", table = "ADDRESS")), @AttributeOverride( name = "ville", column = @Column(name="VILLE", table = "ADDRESS")), @AttributeOverride( name = "code", column = @Column(name="cp", table = "ADDRESS") ) }) private Adresse adresse; @Transcient public Adresse getAdress(){ .... } } public class Adresse { private int idForeignKey; private String typeKey; private String rue; .... private String code; }
Quand Hibernate génère la requête de sélection d'une personne il fait bien un left outter join sur la table adresse avec personne.idpersonne = adresse.idpersonne mais dans le select il n'y a pas les colonnes de la table adresse.
C'est sans doute du au @Transcient que j'ai mis devant le getAddress();
Si je ne le mets pas Hibernate génère
un select Personne.adresse et forcément il n'y a pas de colonne adresse dans la table Personne, il devrait faire select adresse.rue, adresse.code ..... (les champs surchargés au niveau du @Embeded)
Si quelqu'un maitrise les composants avec jointures je suis preneur,
merci d'avance
Partager