在Hibernate 5.2.2的条件类中,createCriteria()被弃用,它的许多相关函数都不能再使用了。我已经找到了criteria.createAlias(String,String)的替代用法,并从以下链接中添加了限制,但我找不到如何在JPA条件中替代标准中可用的以下函数:
criteria.setProjection(Projections.projectionList()
.add(Projections.distinct(Projections.property("student.id")), "id")
.add(Projections.property("student.name"), "name"));
criteria.addOrder(Order.asc("student.name"));
if (limit != null)
criteria.setMaxResults(limit);
if (offset != null)
criteria.setFirstResult(offset);
criteria.setResultTransformer(new AliasToBeanResultTransformer(Student.class));
请为我提供一种使用JPA标准API编写相同代码的替代方法。
发布于 2020-01-20 10:05:57
到目前为止,我发现了以下替代方法:
CriteriaBuilder builder = sessionFactory.getCriteriaBuilder();
CriteriaQuery<Student> criteriaQuery = builder.createQuery(Student.class);
//Perform the required join
criteriaQuery.multiselect(student.get("id").alias("id"),student.get("name").alias("name")).distinct(true);
criteriaQuery.orderBy(builder.asc(student.get("name")));
TypedQuery typedQuery = entityManager.createQuery(criteriaQuery);
if (limit != null)
typedQuery.setMaxResults(limit);
if (offset != null)
typedQuery.setFirstResult(offset);
List<Student> resultList = typedQuery.getResultList();
我的问题用上面的解决办法解决了。JPA标准不需要AliasToBeanResultTransformer()
。它将自身转换为所需的bean。
https://stackoverflow.com/questions/59750426
复制相似问题