在Hibernate 5.2.2中,不推荐使用createCriteria()方法.请提供替代解决方案和代码段.
码
Criteria criteria=session.createCriteria(Student3.class);
List<Student3> studentsNameList= criteria.list();
for (Student3 studentName : studentsNameList) {
System.out.println("Student details - "+studentName.getName()+" -- "+studentName.getEmail()); }
Run Code Online (Sandbox Code Playgroud)
在谷歌搜索我发现DetachedCriteria
可以使用而不是createCriteria()
它没有list()方法
DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Student3.class);
Run Code Online (Sandbox Code Playgroud)
我刚刚完成同样的事情.Hibernate文档说使用JPA Criteria.这是我想出来的......
import javax.persistence.criteria.CriteriaQuery;
CriteriaQuery<Student3> cq = session.getCriteriaBuilder().createQuery(Student3.class);
cq.from(Student3.class);
List<Student3> studentsNameList = session.createQuery(cq).getResultList();
for (Student3 studentName : studentsNameList) {
System.out.println("Student details - "+studentName.getName()+" -- "+studentName.getEmail());
}
Run Code Online (Sandbox Code Playgroud)
不那么优雅,但打字.
- 更新 - 我还没有详细介绍细节,但这里是我如何添加一个实际标准:
import javax.persistence.criteria.CriteriaQuery;
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Student3> cq = cb.createQuery(Student3.class);
Root<Student3> studentRoot = cq.from(Student3.class);
ParameterExpression<Integer> id = cb.parameter(Integer.class);
cq.select(studentRoot).where(cb.eq(studentRoot.get("id"),id));
TypedQuery<Student3> query = em.createQuery(cq);
query.setParameter(p, 2);
List<Student3> results = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
再一次,我只是在学习JPA所以可能有一种更简单的方法(如果你找到了什么,我很想知道它)
归档时间: |
|
查看次数: |
8684 次 |
最近记录: |