hibernate - 在休眠条件中使用限制时出错
问题描述
我是 hibernate 的新手,正在学习 HCQL(Hibernate Criteria Query language),并尝试在代码下方运行但收到警告-'不推荐使用 SharedSessionContract 类型的方法 createCriteria(Class)'
Criteria myCriteria = session.createCriteria(Employee.class);
Criterion nameCriteria = Restrictions.eq("name", "Amit");
myCriteria.add(nameCriteria);
所以我在谷歌上搜索并尝试了下面的代码,但现在在 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();
推荐阅读
- javascript - 将html输入文本字段设为文本溢出左省略号
- ios - Apple 的 AVCamera 夜间模式
- python - 难以抓取下一个按钮
- android - 为什么我无法从 DialogFragment 接收数据到 Fragment?
- javascript - 通过croppie.js 库以模态显示图像
- liquibase - Liquibase diffChangelog 不生成回滚
- python - 在 Python 3 中练习继承时抛出错误
- java - 我该如何解决这个问题:请求行中收到的方法是源服务器已知的,但目标资源不支持
- orientdb - 无法使用 mode=rw 打开本地存储 '/opt/sonatype-work/nexus3/db/config'
- javascript - JSF 自定义组件,将数据从 JSF 传递到 Javascript 并反向