добавить два поля и вставить в третье в доменном классе в Grails - PullRequest
0 голосов
/ 16 февраля 2012

Я работаю над проектом Grails, в котором у меня есть класс домена с 3 полями.мое требование состоит в том, чтобы ввести только 2 поля, а 3-е поле заполняется суммой обоих полей.может кто-нибудь отправить мне код.Thnks

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

См. Производные свойства

Пример сверху ссылка

class Product {
    Float price
    Float taxRate
    Float tax
    static mapping = {
       tax formula: 'PRICE * TAX_RATE'
    }
 }
2 голосов
/ 16 февраля 2012

Вот два полных способа сделать это, в зависимости от ваших потребностей.

Если вам не нужно хранить третье поле, то есть оно используется только для отображения, вы можете сделать это:

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
    }
}

Преимущество такого способа состоит в том, что третье поле заполняется независимо от того, где оно создано или обновлено.

Две ноты:

  1. Если вы хотите суммировать field3 только при его создании, а не при обновлении, удалите beforeUpdate.
  2. Если вы выполняете более сложные вычисления, чем эта простая сумма, добавьте их в другой метод (например, updateField3) и вызовите его вместо его жесткого кодирования.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...