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
私の質問は、最初の例と同じ結果を持つネイティブクエリを使用してどのように選択できますか(JPQLクエリが返すの@LOB
と同じ値を含む)?@ManyToOne