Я хочу использовать унаследованное свойство в именованном запросе производного экземпляра, чтобы я мог предоставить пользовательский вид результатов. Я получаю сообщение об ошибке.
package com.example
class Ticket {
// User is defined elsewhere
static belongsTo = [user : User]
String idNumber
}
class SeasonTicket extends Ticket {
// some custom properties go here
static namedQueries = {
locateOrderedSeasonTicketsByUser { user ->
// all derived instances are in the same table, hence return only the correct derived instances
eq("class", "com.example.SeasonTicket")
// return a match on user
user {
idEq(user.id)
}
// implement custom order
order "customProperty"
}
} << Ticket.namedQueries
}
Последняя строка позволяет использовать любые унаследованные именованные запросы, определенные в базовом классе.
Я получаю следующую ошибку при запуске интеграционного теста, который вызывает:
SeasonTicket.locateOrderedSeasonTicketsByUser(someUserInstance)
Сигнатура метода: com.example.User.call() не применима для типов аргументов: (com.example.SeasonTicket$__clinit__closure2_closure3_closure4) значений: [com.example.SeasonTicket$__clinit__closure2_closure3_closure4@31ee7d7a] Возможные решения: wait(), last (), save(), any(), getAll(), ожидание (долгое)
Интеграционный тест был моей первой попыткой провести простой тест:
void "SeasonTicket.locateOrderedSeasonTicketsByUser finds an object"() {
given:
def seasonTicket = new SeasonTicket()
def user = new User()
user.addToSeasonTickets(seasonTicket)
user.save(flush: true, failOnError: true)
expect: "we can find one season ticket"
SeasonTicket.locateOrderedSeasonTicketsByUser(user).list().size() == 1
}
Похоже, пользовательское поле в базовом классе не распознается. Что я делаю неправильно, пожалуйста?
user
вашего запроса и свойствомuser
классаTicket
. - person aiolos   schedule 28.01.2015