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]
コード例を教えてください...