Я пытаюсь сортировать свои данные по слою 3, но я не вижу, чтобы заставить его работать. Я успешно использую псевдонимы для запроса отношений уровня 2. Вот как у меня есть мои настройки запросаGrails: Отдельные критерии для множественных вложенных отношений
def query = Application.where {}
query.createAlias("applicationDegrees", "appDegrees");
query.createAlias("applicationDegrees.degree", "degree");
query.createAlias("applicationDegrees.applicationDegreeMajors", "appMajors");
query.createAlias("applicationDegrees.applicationDegreeMajors.major", "major");
return query.list([sort: "degree.code", order: "desc"]); //WORKS
return query.list([sort: "major.code", order: "desc"]); //DOES NOT WORK
Как вы можете видеть из моего примера кода выше, можно сортировать по appDegrees и степени. Когда я пытаюсь сделать это еще дальше и сортировать на основе appMajors или major, которые являются отношениями appDegrees, он не сортируется должным образом. Никакая сортировка не применяется вообще, но сообщения об ошибках также не выбрасываются.
Это моя модель данных
class Application {
Set<ApplicationDegree> applicationDegrees = []
static hasMany = [applicationDegrees: ApplicationDegree]
}
class ApplicationDegree {
Application app
Degree degree
Set applicationDegreeMajors = []
static hasMany = [applicationDegreeMajors: ApplicationDegreeMajor]
static belongsTo = [Application, Degree]
}
class ApplicationDegreeMajor {
ApplicationDegree applicationDegree
Major major
static belongsTo = [ApplicationDegree, Major]
}
Как мне создать псевдонимы, так что я могу сортировать майором?
Grails 3.1.4
к сожалению, это не сработало, пытаясь создать псевдоним, как указано ваш выдает ошибку 'java.lang.IllegalArgumentException: Аргумент [appMajors.major] не является association' –
Хорошо, я редактировал ответ и предоставление более широкий пример по информации, взятой из упомянутой ссылки. Пожалуйста, подтвердите. –