1

特定の列でソートされた子オブジェクトを取得したいと考えています。
私は親クラスの学生を持っています

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();

しかし、それは機能していません。誰かが私を助けることができます。私は何か間違ったことをしましたか?

4

1 に答える 1

0

studentPhoneNumbersプレイスアノテーションとクエリでorderByJoin Fetch を使用して、すべての電話を積極的に取り込みます。

これは、すべての fect が常に をstudentPhoneNumbers生成することを意味することに注意してくださいSELECT ... ORDER BY。それが望ましくない場合は、結果を取得した後にコレクションをコードでソートすることをお勧めします。

于 2013-07-17T17:34:38.230 に答える