Полагаю, вам нужны только экземпляры Animal, а не их подклассы?
Это немного сложно сделать в JPA, так как кошки тоже животные, поэтому они возвращаются.
Вы должны исключить их вручную из запроса, например:
from Animal a
where a.id not in (select c.id from Cat c)
and a.id not in (select d.id from Dog d)
(Поскольку у вас есть эта проблема, возможно, полиморфизм не является идеальным решением в этом случае.)