【问题标题】:HQL convert complicated hql to criteriaHQL 将复杂的 hql 转换为标准
【发布时间】:2014-03-19 16:14:01
【问题描述】:

HQL

Query query = getSession()
        .createQuery(
                "select com from News as news " +
                "join news.comments as com " +
                "where news.id = :id " +
                "order by com.addDate desc"
        );
query.setParameter("id", id);

上面的 HQL 工作正常。想要更改标准 api。我做不到。请帮忙

【问题讨论】:

    标签: java hibernate criteria-api


    【解决方案1】:

    我想你可以试试这样的。

        Criteria c  = createCriteria(News.class);
        c.add(Restrictions.idEq(id));
        Criteria cComment = c.createCriteria("comments",c);
        cComment.addOrder(Order.desc("addDate"));
        ProjectionList projections = Projections.projectionList();
        projections.add(Projections.property("c.id"),"id");
        projections.add(Projections.property("c.addDate"),"addDate");
        //Other Properties...
        c.setProjection(projections)
        c.setResultTransformer(Transformers.aliasToBean(Comment.class))
        List<News> list = c.list();
    

    请注意,Hibernate Criteria API 已被弃用,取而代之的是 JPA Criteria API

    【讨论】:

    • 你的例子很好,但它返回列表新闻。我想回复评论。
    • 对不起。你评论 pojo 有提到新闻吗?
    猜你喜欢
    • 2014-01-20
    • 2011-07-30
    • 2014-09-14
    • 2015-10-18
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多