Как отсортировать один из составных ключей в Hibernate с помощью @OrderBy - PullRequest
1 голос
/ 05 июля 2011

У меня есть два класса Course и Student. Класс Student использует firstName и lastName в качестве составного ключа. Я хочу использовать @OrderBy("firstName ASC") в Course классе, но есть ошибка "свойство из условия @OrderBy не найдено: Student.firstName" .

Как сортировать по одному из составных ключей (например, firstName)?

public class Course{
    @OneToMany(mappedBy="course")
    @OrderBy("firstName ASC")  
    // Error: property from @OrderBy clause not found: Student.firstName, why?
    private List<Student> students;
.....
}


public class Student{
    @Id
    @Column(name="first_name")
    private String firtName;
    @Id
    @Column(name="last_name")
    private String lastName;

    @ManyToOne
    @JoinColumn(name="course_id")
    private Course course;
.....
}

1 Ответ

1 голос
/ 05 июля 2011

Вы ошиблись, firtName - уведомление s отсутствует. Исправьте это, и все будет хорошо, скорее всего.

[Изменено]

На случай, если он все еще не работает. Попробуйте вместо этого заменить @EmbeddedId. Как показано ниже,

public class Student implements Serializable{
    @EmbeddedId
    private StudentPK name;

    @ManyToOne
    @JoinColumn(name="course_id")
    private Course course;
    .....

    @Embeddable
    public static class StudentPK implements Serializable {
        @Column(name="first_name")
        private String firtName;

        @Column(name="last_name")
        private String lastName;

        ....
    }
}

Тогда это должно работать, используя,

public class Course{
    @OneToMany(mappedBy="course")
    @OrderBy("name.firstName ASC")  
    private List students;
    .....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...