У меня есть 2 домена:Как получить экземпляр класса вместо его подкласса?
казус:
class Incident {
String title
String description
}
static mapping = {
tablePerHierarchy(false)
}
И IncidentWithTimers которые распространяется казус:
class IncidentWithTimers extends Incident {
int currentResponseTime
Date responseTimeEndDate
}
IncidentWithTimers не является фактической таблицы в базе данных, это вид базы данных.
Теперь, когда я пытаюсь получить экземпляр инцидентов от контроллера, он какой-то образом возвращает экземпляр IncidentWithTimers:
def index() {
Incident curIncident = Incident.get(params.incident)
println(curIncident.getClass())// "class IncidentWithTimers"
}
Поскольку эта область представляет собой вид, я отключил все модификации, бросая исключения в beforeInsert
/Update
/Delete
, в классе IncidentWithTimers.
Когда я пытаюсь изменить и сохранить curIncident, он пытается получить доступ к beforeUpdate()
и выдает ошибку, в то время как я никогда не хотел менять IncidentWithTimers
в первую очередь.
Что я могу сделать по этому поводу?
Идентификатор инцидента в 'params.incident' относится к экземпляру' Incident' или 'IncidentWithTimers'? –
Ничего. params.incident получает значение инцидента из строки запроса. (Так url.com/?incident=1 вернется 1). – Ivar
Я имею в виду, что, следуя вашему примеру, это инцидент с идентификатором 1 «Инцидент» или «ИнцидентВидТимеры»? Кроме того, являются ли идентификаторы, возвращаемые представлением, что «IncidentWithTimers» сопоставляется с той же таблицей, на которую сопоставляется «Инцидент»? Да, я подразумеваю, что оба должны иметь одно и то же идентификационное пространство имен. –