【问题标题】:hibernate criteria query order by join table field通过连接表字段的休眠条件查询顺序
【发布时间】:2017-01-27 03:21:09
【问题描述】:

我使用mysql数据库,有两个表chapterchapter_title_1,表chapter_title_1中有一个fkchapter_id引用表chapter

两个实体类ChapterEntity.class参考表chapterChapterTitle1Entity.class参考表chapter_title_1。在ChapterEntity.class 中有一个List<ChapterTitle1Entity> chapterTitle1EntityList,用@OneToMany 注释。我想获得由ChapterEntity.sequence asc 排序的ChapterEntity 列表以及由ChapterEntity 排序的ChapterEntity 的每个项目中的ChapterTitle1Entity 列表ChapterTitle1Entity.sequence desc .

在我的 ADO 层中,我使用条件来查询我的数据库。我使用以下代码获取列表:

Criteria criteria = session().createCriteria(ChapterEntity.class, "chapter");
criteria.createAlias("chapter.chapterTitle1EntityList", "title1List");
criteria.addOrder(Order.asc("chapter.sequence")).
        addOrder(Order.desc("title1List.sequence"));
List<ChapterEntity> chapterEntityList = criteria.list();
return chapterEntityList; 

但是无论是addOrder(Order.desc("title1List.sequence")还是addOrder(Order.asc("title1List.sequence"),List ChapterTitle1Entity的顺序都是一样的。

【问题讨论】:

    标签: hibernate sql-order-by hibernate-criteria jointable


    【解决方案1】:

    你可以简单地做:

    ChapterEntity.class
    
    @OneToMany(fetch=FetchType.EAGER , mappedBy="ChapterEntity")
    @OrderBy("sequence Desc")
    List<ChapterTitle1Entity> chapterTitle1EntityList;
    

    但代码将成为列表的通配符。

    【讨论】:

    • 非常感谢,但尴尬的是有时我也希望它按sequence asc 排序,所以我使用休眠条件来查询我的数据库。
    • 是的,如果您使用给定的标准,它会起作用。现在您不需要创建任何别名,只需使用 Order.asc("chapter.sequence") 的简单条件即可。
    • 对不起,不管我用Order.desc("title1List.sequence")还是Order.asc("title1List.sequence"),结果都是一样的。它没有用。
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多