Вот два полных способа сделать это, в зависимости от ваших потребностей.
Если вам не нужно хранить третье поле, то есть оно используется только для отображения, вы можете сделать это:
class MyDomain {
int field1
int field2
static transients = ['field3']
getField3() {
field1 + field2
}
}
Это позволит вам получить доступ к сумме как myDomain.field3
.
Если вам нужно сохранить его, скажем, потому что он интенсивно используется в вычислениях, вы можете использовать события для автоматического вычисления и сохранения суммы, например:
class MyDomain {
int field1
int field2
int field3
def beforeInsert() {
field3 = field1 + field2
}
def beforeUpdate() {
field3 = field1 + field2
}
}
Преимущество такого способа состоит в том, что третье поле заполняется независимо от того, где оно создано или обновлено.
Две ноты:
- Если вы хотите суммировать
field3
только при его создании, а не при обновлении, удалите beforeUpdate
.
- Если вы выполняете более сложные вычисления, чем эта простая сумма, добавьте их в другой метод (например,
updateField3
) и вызовите его вместо его жесткого кодирования.