我有2个域名:
事件:
class Incident {
String title
String description
}
static mapping = {
tablePerHierarchy(false)
}
和IncidentWithTimers扩展事件:
class IncidentWithTimers extends Incident {
int currentResponseTime
Date responseTimeEndDate
}
IncidentWithTimers不是数据库中的实际表,而是数据库视图。
现在,当我尝试从控制器获取Incident实例时,它以某种方式返回IncidentWithTimers实例:
def index() {
Incident curIncident = Incident.get(params.incident)
println(curIncident.getClass())// "class IncidentWithTimers"
}
由于此域是一个视图,因此我通过在IncidentWithTimers类的beforeInsert
/ Update
/ Delete
中抛出异常来禁用所有修改。
当我尝试修改并保存curIncident时,它会尝试访问beforeUpdate()
并抛出错误,而我从不想首先更改IncidentWithTimers
。
我该怎么办?
答案 0 :(得分:1)
问题是视图包含每个Incident
,而不是子类中发生的子集。正如您所说,IncidentWithTimers
每Incident
都是IncidentWithTimers
。
解决方案是使用查询而不是子类,或使from("rabbitmq://localhost/A?routingKey=B&exchangeType=topic")
成为独立的重复类而不是子类。
我认为前者是最佳选择,因为意图很明确。