Die kurze Antwort ist, dass Sie nicht tun. In JPA:
Die Standardstrategie, InheritanceType.SINGLE_TABLE, wird verwendet, wenn die @Inheritance Anmerkung auf der Stammklasse der Entitätshierarchie nicht angegeben
Wenn Sie alles aus der Tabelle C wählen, die JPA-Provider-Klassen auf dem discriminator column
basierend instanziiert, so
List<C> rl = em.createQuery("select c from C c", C.class).getResultList();
System.out.println(rl);
geben Ihnen:
Hibernate: select c0_.id as id2_0_, c0_.DTYPE as DTYPE1_0_ from C c0
[[email protected], [email protected], [email protected]]
Wenn Sie möchten, können Sie den instanceof
-Operator in Java verwenden, um die Ergebnistypen zu bestimmen. Wenn Sie eine bestimmte Unterklasse wollen, dann abfragen es einfach:
List<A> rl = em.createQuery("select a from A a", A.class).getResultList();
System.out.println(rl);
, die Sie:
Hibernate: select a0_.id as id2_0_ from C a0_ where a0_.DTYPE='A'
[[email protected]]
Referenz: Entity Inheritance
Wie würden Sie versuchen, diese SQL in Vanille zu schreiben? – Makoto
Bitte lesen Sie http://StackOverflow.com/Help/how-to-ask –
Wie kann jemand dazu kommentieren, ohne die Klassen und die Beziehungen zu sehen? –