使用继承重构 Grails 域 类
Refactor Grails Domain Classes with inheritance
我的 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 个 table,一个用于包含多个字段的消息,一个 table 用于 inbound_message,一个用于 outbound_message。
因此对于此示例,消息 table 具有列 field_a 和 field_b。 inbound_message table 有 field_in
因为 3 个 table 存在一些性能问题,我想将其更改为两个 table。所以 inbound_message 应该包含消息中的所有字段和 InboundMessage 中的附加字段。
所以应该只有两个table,inbound_message和outbound_message。
inbound_message 应包含 field_a、field_b 和 field_in 列
outbound_message 应包含 field_a、field_b 和 field_out
列
如何在不对我的 grails 代码进行太多更改的情况下实现这一点?保留抽象消息 class 将是完美的,这样我就可以在一个地方拥有每条消息的字段。
但最终结果应该是:数据库中只有两个table。
我找到了这个问题的解决方案:
在所有三个 类 中,我添加了以下代码:
static mapping = {
tablePerConcreteClass true
}
现在一切如我所愿
我的 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 个 table,一个用于包含多个字段的消息,一个 table 用于 inbound_message,一个用于 outbound_message。 因此对于此示例,消息 table 具有列 field_a 和 field_b。 inbound_message table 有 field_in
因为 3 个 table 存在一些性能问题,我想将其更改为两个 table。所以 inbound_message 应该包含消息中的所有字段和 InboundMessage 中的附加字段。
所以应该只有两个table,inbound_message和outbound_message。 inbound_message 应包含 field_a、field_b 和 field_in 列 outbound_message 应包含 field_a、field_b 和 field_out
列如何在不对我的 grails 代码进行太多更改的情况下实现这一点?保留抽象消息 class 将是完美的,这样我就可以在一个地方拥有每条消息的字段。 但最终结果应该是:数据库中只有两个table。
我找到了这个问题的解决方案:
在所有三个 类 中,我添加了以下代码:
static mapping = {
tablePerConcreteClass true
}
现在一切如我所愿