Bonjour,

Je souhaite utiliser des "component" hibernate

J'ai une classe personne et une classe 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; 
 
 
}
J'ai donc 2 classes et deux tables, dans Personne j'ai un composant Adresse.
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