I have got an Object Admin
which extends User
. By default both Objects are in the table User_
of my Derby Database (included fields from Admin
). Normally I'd select an User
like this:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root user= query.from(User.class);
Predicate predicateId = cb.equal(category.get("id"), id);
query.select(user).where(predicateId);
return em.createQuery(query).getSingleResult();
However due to the complexity of my query I'm using a native query like this:
Query query = em.createNativeQuery("SELECT USER.* FROM USER_ AS USER WHERE ID = ?");
query.setParameter(1, id);
return (User) query.getSingleResult();
Though this throws a cast exception. I figure this is due to any fields from Admin
.
My question is, how can I select a User
using a native query with an equal result as the first example (including the same values for @LOB
and @ManyToOne
(et cetera) as the JPQL query would return)?