Параметр resultClass принимает только классы сущностей.
Кроме того, при использовании собственных запросов вам никогда не гарантируется, какой будет тип возвращаемого значения для чисел, поэтому использование Integer или Long в типопередаче будет часто взрываться.на вас, когда это java.math.BigInteger
.
Что вам нужно сделать, это:
Query query = em.createNativeQuery("select 1 from dual");
Number nval = (Number) query.getSingleResult();
Integer val = nval == null ? null : nval.intValue();
Или для списка:
Query query = em.createNativeQuery("select 1 from dual");
List<Number> l = (List<Number>) query.getResultList();
for (Number nval : l) {
Integer val = nval == null ? null : nval.intValue();
// do stuff
}