[英]Hibernate Criteria Query select where clause
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
我正在制作Spring Hibernate 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]
請幫我提供代碼示例謝謝...
@PersistenceContext
EntityManager em;
@Transactional
public List<Person> listPerson() {
CriteriaQuery<Person> c = em.getCriteriaBuilder().createQuery(Person.class);
Root<Person> from = c.from(Person.class);
c.select(from);
c.where(em.getCriteriaBuilder().equal(from.get("owner_email"),"john@gmail.com")); // <- this will add the restriction.
c.orderBy(em.getCriteriaBuilder().asc(from.get("firstname")));
return em.createQuery(c).getResultList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.