Я пытаюсь использовать набор объектов «шаблона» для заполнения отношений гармонии на другом объекте, но .each не работает, как ожидает Id.Grails: «domain» этого домена не может быть принудительно применен к типу домена?
Вкратце я моделирую «Мир», который содержит несколько объектов HouseInstance. Каждый HouseInstance связан с другим существующим набором объектов HouseProto, из которых HouseInstance получает определенные функции (квадратные футы, # спальни и т. Д.)
поэтому, когда я создаю мир, у меня есть обычная процедура makeHouses, которая создает HouseInstance для каждого HouseProto и присваивает HouseProto экземпляру дома.
Вот код:
class World {
static hasMany=[houses: HouseInstance]
static constraints = {
}
void makeHouses() {
HouseProto.each {
def hi=new HouseInstance();
hi.houseProto= it;
hi.world=this;
}
}
}
class HouseInstance {
Neighborhood neighborhood
static belongsTo=[houseProto: HouseProto, world: World]
static constraints = {
}
}
Так я создал несколько «HouseProto» объекты, а затем я запускаю следующий код:
def w= new World()
w.makeHouses()
Это приводит его к ошибке принуждения типа, что происходит на линии в makeHouses, где я пытаюсь назначить объект HouseProto объекту HouseInstance.
hi.houseProto= it;
«Это должен быть экземпляр HouseProto, потому что он создается каждым методом класса Domain. Тем не менее я получаю ошибку:
Caused by: java.lang.IllegalStateException: Cannot convert value of type [java.lang.Class] to required type [com.grapevine.negotiator2.HouseProto] for property 'houseProto': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:306)
Это, кажется, говорил мне, что «это не HouseProto, а просто java.lang.Class из не определенного типа, которые не могут быть принуждены к HouseProto. Я не понимаю, как это возможно (или как исправить.)
Очень простая вещь, которую вы пытаетесь выполнить итерацию класса, а не набор объектов класса. –