JPA 原生查询选择和转换对象
- 论坛
- JPA 原生查询选择和转换对象
23 浏览
JPA 原生查询选择和转换对象
我有一个继承自User的Admin对象。默认情况下,这两个对象都在我的Derby数据库的User_表中(包括Admin的字段)。通常我会像这样选择一个User:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery
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,并获得与第一个示例相同的结果(包括JPQL查询返回的@LOB和@ManyToOne等字段的相同值)?