Bonjour à tous,

Soit la classe abstraite (cf le code à la fin) Test0
Soit les classe Test1 et Test2 deux classes étendant la classe Test0
Les classe Test1 et Test2 sont mappées de façon à pointer sur respectivement, les tables Table1 et Table2

question :Est il possible de faire récuperer tous les enregistrments des tables Tes1 et Test2 en une seule requette grace à la classe Test0 ?

D'apres ce que j'ai lu, il semblerait que cela soit tout à fait possible, malheureusement j'ai du rater une étape car j'ai l'exception suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
org.hibernate.hql.ast.QuerySyntaxException: Test0 is not mapped [from Test0 test0 where test0.name=:nameEtude]
vous trouverez les trois classes ci dessous , ainsi que la methode ou j'execute ma requette sur la base de données.

si quelqu'un avait une réponse ou même une piste ...
Par avance merci
Bonne journée


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
45
 
 
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Test0 extends PersistantModelReplicable {
 
    static Logger log = Logger.getLogger(Test0.class);
    String name;
 
    @Column(name = "NAME")
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
 
====================================================
 
@Entity
@Table(name = "Table1")
public class Test1 extends Test0 {
   static Logger log = Logger.getLogger(Test1.class);
 
    public Test1(){
 
    }
 
}
================================================
 
@Entity
@Table(name = "Table2")
public class Test2 extends Test0 {
   static Logger log = Logger.getLogger(Test2.class);
 
    public Test2(){
 
    }
}
=============================================
 
Test0 test0 = (Test0) getSession().createQuery("from Test0 test0 where test0.name=:nameEtude").setString("nameEtude","NomEtude").uniqueResult();