【问题标题】:Order by not working for child objects in Hibernate通过不为 Hibernate 中的子对象工作来排序
【发布时间】:2013-07-17 17:17:01
【问题描述】:

我想检索按特定列排序的子对象。
我有家长班学生

public class Student {

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="STUDENT_ID")
    private long studentId; 

    @Column(name="STUDENT_NAME")
    private String studentName;

    @OneToMany(mappedBy="student")
    private List<Phone> studentPhoneNumbers ; 
}

和子类电话

public class Phone {

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="PHONE_ID")
    private long phoneId; 

    @Column(name="PHONE_NO")
    private String phoneNumber;

    @Column(name ="UPDATE_TMSTP")
    private Date updateTmstp;

    @ManyToOne
    @JoinColumn(name = "STUDENT_ID")
    private Student student;
}

我正在获取 Student 对象,这反过来给了我电话号码列表。我希望根据updateTmstp 列对这些电话号码进行排序,为此我写了这个

Student stu = (Student)session.createCriteria(Student.class)
                .createAlias("studentPhoneNumbers", "st").addOrder(Order.desc("st.updateTmstp")).uniqueResult();

但它不起作用。有人能帮我吗。我是不是做错了什么?

【问题讨论】:

    标签: java hibernate sql-order-by


    【解决方案1】:

    studentPhoneNumbers 下放置orderBy 注释并在查询时使用Join Fetch 热切地带上所有手机。

    请注意,这意味着 studentPhoneNumbers 上的所有 fecth 将始终生成 SELECT ... ORDER BY。如果这不是你想要的,我建议在得到结果后对集合进行排序。

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      相关资源
      最近更新 更多