用继承重构Grails域类



我的grails应用程序中有3个对象:

abstract class Message {
//many fields here
static mapping = {         
tablePerHierarchy false
}
int fieldA
int fieldB
}
class InboundMessage extends Message {
//some fields
int field_in
}
class OutboundMessage extends Message {
//some fields
int field_out
}

在数据库中,我有3个表,一个用于具有许多字段的消息,一个用于inbound_message和一个用于outbound_message。因此,对于本例,消息表具有field_a和field_b列。inbound_message表有field_in

因为这3个表有一些性能问题,我想把它改成2个表。因此,inbound_message应该包含来自message的所有字段和来自InboundMessage的附加字段。

所以应该只有两个表,inbound_message和outbound_message。Inbound_message应该有field_a, field_b和field_in列Outbound_message应该有field_a、field_b和field_out列

我如何在不改变太多grails代码的情况下实现这一点?保留抽象消息类将是完美的,这样我就可以在一个地方拥有每个消息的字段。但是最终的结果应该是:数据库中只有两个表。

我找到了一个解决这个问题的方法:

在这三个类中我添加了以下代码:

static mapping = {       
tablePerConcreteClass true
}

现在它正在工作,如我所料

相关内容

  • 没有找到相关文章

最新更新