[英]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
i am making a spring hibernate web application, i have a table like above. 我正在制作Spring Hibernate Web应用程序,我有一个上面的表格。 what im trying to get is something like:
我试图得到的是这样的:
select * from person where owner_email='john@gmail.com'
so the method will return me list of person objects related to john@gmail.com 因此该方法将向我返回与john@gmail.com相关的人员对象列表
here is my query code but doesnt work... 这是我的查询代码,但不起作用...
@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();
}
here is the error i get.... 这是我得到的错误。
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]
please help me with code example thanks... 请帮我提供代码示例谢谢...
@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.