1
person:

id | owner_email               | firstname | lastname 
----+-------------+-----------+----------
 44 | john@gmail.com           | john       | wood
 45 | alex@gamil.com           | alex       | greenwood
 49 | peter@gamil.com          | peter      | blacksmith
 50 | john@gmail.com           | lee        | wu
 51 | john@gmail.com           | jane       | li

私は春の休止状態の Web アプリケーションを作成しています。上記のようなテーブルがあります。私が取得しようとしているのは次のようなものです:

select * from person where owner_email='john@gmail.com'

このメソッドは、john@gmail.com に関連する人物オブジェクトのリストを返します。

ここに私のクエリコードがありますが、うまくいきません...

    @PersistenceContext
    EntityManager em;


    @Transactional
    public List<Person> listPerson() {
        CriteriaQuery<Person> c = em.getCriteriaBuilder().createQuery(Person.class);
        Root<Person> from = c.from(Person.class);
        c.multiselect(from.get("owner_email"));
        c.orderBy(em.getCriteriaBuilder().asc(from.get("firstname")));
        return em.createQuery(c).getResultList();
    }

ここに私が得るエラーがあります....

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [com.example.model.Person] [select new com.example.model.Person(generatedAlias0.owner_email) from com.example.model.Person as generatedAlias0]

コード例を教えてください...

4

1 に答える 1