Or short version - this query:
SELECT p FROM Concrete2 p WHERE TYPE(p) = Concrete2
does not seem logically wrong, but it is only valid if Concrete2 has a subtype, which I cannot generally guarantee.