gpt4 book ai didi

java - Hibernate Criteria 查询 select where 子句

转载 作者:行者123 更新时间:2023-12-02 05:33:50 26 4
gpt4 key购买 nike

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 应用程序,我有一张像上面这样的 table 。我想要得到的是这样的:

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();
}

关于java - Hibernate Criteria 查询 select where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25233313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com