#grails
#grails
Вопрос:
У меня есть некоторые логические значения, которые используются во всем моем проекте grails (services amp; controllers и т.д.), Поэтому они объявлены в моем классе домена, но я не хочу, чтобы они отображались в таблице в базе данных. Вместо того, чтобы объявлять их логическими, я попробовал Def, но это не работает. Есть ли способ сделать это?
Ответ №1:
Если вы хотите иметь свойство класса домена, которое не сохраняется в базе данных, тогда используйте переходные процессы.
Вот простой пример:
class Thing {
String name
boolean flag
boolean anotherFlag
static transients = ['flag', 'anotherFlag']
}
Ответ №2:
Кое-что, что я почерпнул из одного из видеороликов grails Берта Беквита, было в классах домена grails, если вы определяете getter
или a setter
без объявления самого объекта, который сам по умолчанию становится переходным объектом. Итак, как указано выше, а не все объявления, если у вас было
//This will return the same value
boolean getFlag() {
return someField amp;amp; someOtherField
}
//so you call `object.flag` or `object.getFlag()`
Это избавляет от необходимости объявлять временное значение, а также дает вам возможность применить некоторую логику «на лету».
Честно говоря, похоже, что вы используете как класс домена для проверки, так и для ввода. Обычно я отделяю и создаю класс проверки в src для выполнения этой части и получаю класс домена для выполнения необработанной работы — делает его более чистым, скажем