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
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
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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