Объявление логических значений в классе домена без отображения в базе данных

#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 для выполнения этой части и получаю класс домена для выполнения необработанной работы — делает его более чистым, скажем