javajpaentitymanager

Java /JPA | Query with specified inherited type


I am building a query on a generic table "Sample" and I have several types which inherit from this table "SampleOne", "SampleTwo". I require a query like :

select s from Sample where s.type = :type

where type would be a discriminator value of the table. Is it possible in any way ( and avoid to create an entity specific queries, one for each SampleOne, SampleTwo... etc )

I would greatly appreciate any input in this topic,

Kind regards, P.


Solution

  • In JPA 2.0 you can use TYPE expression (though currently it doesn't work with parameters in Hibernate, see HHH-5282):

    select s from Sample s where TYPE(s) = :type
    

    The similar Hibernate-specific expression is .class:

    select s from Sample s where s.class = :type