在 hibernate-criteria 中使用限制时出错
Getting error when using Restriction in hibernate-criteria
我是 hibernate 的新手,正在学习 HCQL(Hibernate Criteria Query language)并尝试了下面的代码 运行 但收到警告-'The method createCriteria(Class) from the type SharedSessionContract is deprecated'
Criteria myCriteria = session.createCriteria(Employee.class);
Criterion nameCriteria = Restrictions.eq("name", "Amit");
myCriteria.add(nameCriteria);
所以我在 Google 上搜索并尝试了下面的代码,但现在在 myCriteria.add(nameCriteria) 方法中收到错误 -'The method add(Criterion) is undefined for the type CriteriaQuery'
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Employee> criteria = builder.createQuery(Employee.class);
Root<Employee> employeeRoot=criteria.from(Employee.class);
criteria.select(employeeRoot);
Criterion nameCriteria = Restrictions.eq("name", "Amit");
criteria.add(nameCriteria);
谁能帮我解决这个问题?
谢谢
正如我所看到的,您正在尝试将两个 API 结合起来。 Restrictions.eq()
是专有的 Hibernate API,您不能将它与 CriteriaQuery
一起使用。如果你想使用 JPA Criteria API 你可以像这样重写这个查询:
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Employee> criteria = builder.createQuery(Employee.class);
Root<Employee> employeeRoot = criteria.from(Employee.class);
criteria.select(employeeRoot)
.where(
builder.equal(
employeeRoot.get("name"),
"Amit")
);
TypedQuery<Employee> query = em.createQuery(criteria);
Employee emp = query.getSingleResult();
我是 hibernate 的新手,正在学习 HCQL(Hibernate Criteria Query language)并尝试了下面的代码 运行 但收到警告-'The method createCriteria(Class) from the type SharedSessionContract is deprecated'
Criteria myCriteria = session.createCriteria(Employee.class);
Criterion nameCriteria = Restrictions.eq("name", "Amit");
myCriteria.add(nameCriteria);
所以我在 Google 上搜索并尝试了下面的代码,但现在在 myCriteria.add(nameCriteria) 方法中收到错误 -'The method add(Criterion) is undefined for the type CriteriaQuery'
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Employee> criteria = builder.createQuery(Employee.class);
Root<Employee> employeeRoot=criteria.from(Employee.class);
criteria.select(employeeRoot);
Criterion nameCriteria = Restrictions.eq("name", "Amit");
criteria.add(nameCriteria);
谁能帮我解决这个问题? 谢谢
正如我所看到的,您正在尝试将两个 API 结合起来。 Restrictions.eq()
是专有的 Hibernate API,您不能将它与 CriteriaQuery
一起使用。如果你想使用 JPA Criteria API 你可以像这样重写这个查询:
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Employee> criteria = builder.createQuery(Employee.class);
Root<Employee> employeeRoot = criteria.from(Employee.class);
criteria.select(employeeRoot)
.where(
builder.equal(
employeeRoot.get("name"),
"Amit")
);
TypedQuery<Employee> query = em.createQuery(criteria);
Employee emp = query.getSingleResult();