EDIT: На мой ответ ниже это кажется фиксированным «grails clean». Вы разочаровываете голову, и иногда вы замечаете очевидное.Новый объект домена Grails с категорией свойств, не задающей свойство
В течение некоторого времени мы имели следующую структуру объектов предметной области:
abstract class Company {
String name
...
}
и несколько детей, похожие на следующем все с разными «владельцем» объектами. У каждого конкретного класса есть своя таблица в БД.
class CompanyChild extends Company {
static belongsTo = [owner:SomeDomain]
...
}
Я добавляю еще одно свойство для абстрактного родителя по разным причинам, поэтому родитель теперь выглядит больше как следующее (CompanyType это перечисление):
abstract class Company {
String name
CompanyType companyType
...
}
Все это кажется довольно простым. В настоящее время в службе компании, где-то я это делаю:
log.debug("Saving new company type=$companyType")
def company= new Company(name: 'Acme', companyType: companyType, <other properties here>)
log.debug("company object has type=${company.companyType}")
В журнале отображается ...
CompanyService Saving new company type=NONPROFIT
CompanyService company object has type=null
Какого черта здесь происходит? Похоже, что $ {company.companyType} не должен быть нулевым.
Если я добавлю company.companyType = companyType после того, как объект создан, он работает, но есть кое-что, что я не понимаю.
Edit: Grails версия 2.3.11