Bonjour,
Voici mon problème:
J'ai 3 entités: une classe mère BasicEntity et 2 sous classes Entity1 et Entity2, qui ont des propriétés communes, déléguées sur une "embedded entity" EmbeddableInfo
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 41 42 43 44
| @Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class BasicEntity {
Long id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
...
@Entity
public class Entity1 extends BasicEntity {
String prop1;
EmbeddableInfo embeddedInfo;
@Embedded
public EmbeddableInfo getEmbeddedInfo() {
return embeddedInfo;
}
...
@Entity
public class Entity2 extends BasicEntity {
String prop2;
EmbeddableInfo embeddedInfo;
@Embedded
public EmbeddableInfo getEmbeddedInfo() {
return embeddedInfo;
}
...
et
@Embeddable
public class EmbeddableInfo {
String infoProp;
... |
Lorsque je fais:
List<BasicEntity> result0 = em.createQuery("Select e from BasicEntity e").getResultList();
je récupère bien toutes les instances de Entity1 et Entity2
Par contre, lorsque je fais:
List<BasicEntity> result1 = em.createQuery("Select e from BasicEntity e where (e.embeddedInfo.infoProp = 'eki')").getResultList();
je ne récupère que les instances de Entity1 (la requête générée ne permet pas de remonter les instances de Entity2)
Y a-t-il une explication ou s'agit-il d'un bug Hibernate ?
Précision: je ne souhaite pas déplacer EmbeddableInfo sur BasicEntity car je voudrai pouvoir combiner définir plusieurs "EmbeddableInfo" et ensuite les combiner au besoin sur mes objets métiers (un peu du multi-héritage)
Merci d'avance
Partager