У меня есть объект Admin
, который расширяет User
. По умолчанию оба объекта находятся в таблице User_
моей базы данных Derby (включены поля из Admin
). Обычно я бы выбрал User
следующим образом:
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();
Однако из-за сложности моего запроса я использую собственный запрос вроде этого:
Query query = em.createNativeQuery("SELECT USER.* FROM USER_ AS USER WHERE ID = ?");
query.setParameter(1, id);
return (User) query.getSingleResult();
Несмотря на то, что это исключает исключение. Я полагаю, что это связано с любыми полями от Admin
.
Мой вопрос: как я могу выбрать User
с использованием собственного запроса с равным результатом в качестве первого примера (включая те же значения для @LOB
и @ManyToOne
(et cetera), что и запрос JPQL )?