首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JPA条件的代码的替代方式

使用JPA条件的代码的替代方式
EN

Stack Overflow用户
提问于 2020-01-15 11:24:41
回答 1查看 575关注 0票数 1

在Hibernate 5.2.2的条件类中,createCriteria()被弃用,它的许多相关函数都不能再使用了。我已经找到了criteria.createAlias(String,String)的替代用法,并从以下链接中添加了限制,但我找不到如何在JPA条件中替代标准中可用的以下函数:

代码语言:javascript
运行
复制
    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编写相同代码的替代方法。

EN

回答 1

Stack Overflow用户

发布于 2020-01-20 10:05:57

到目前为止,我发现了以下替代方法:

代码语言:javascript
运行
复制
    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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59750426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档