Я пытаюсь реализовать «объемную» вставку для hasMany. И получил его на 90%, но попал в икоту с моим дизайном поликласса. У меня есть модель, какGrails hasMany bulk create
class Parent {
static hasMany = [references: Reference]
}
class Reference {
static belongsTo = [parent: Parent]
String name
}
class ConcreteReference extends Reference{
String childName
}
я смог получить создать working
(определяется путем создания записей) при наличии разметки, как
<form action='reference/1/edit>
<input name='references[0].name' value='name1' />
<input name='references[0].childName' value='childName1' />
<input name='references[1].name' value='name2' />
<input name='references[1].childName' value='childName2' />
</form>
Но вопрос всегда создает конкретный тип (класс = . 'domain.Reference'), так что «имя ребенка всегда нуль
Я использовал:
def edit(def id){
def parent = Parent.get(id)
//i actually clear all the old references first (didn't show that code)
parent.properties = params
parent.save(flush:true)
}
Как я могу указать «конкретный тип» (я попробовал скрытое значение класса, который он не сработал), или есть простой способ выполнить цикл через params.reference [idx], создать его, а затем добавить в родительский?
надеюсь, что это ясно, дайте мне знать, если вам нужно какое-либо разъяснение.
'ConcreteReference расширяет Reference' является то, что вы имели в виду? – dmahapatro
Является ли 'Reference' абстрактным классом? Если да, есть ли у вас 'Reference' внутри' grails-app/domain' или 'src/groovy'? – dmahapatro
Я не уверен, в чем проблема, но я проверил ваш код, он отлично работает для меня. Единственное отличие состоит в том, что я не отправляю из формы, но иду с вызовом REST. Я хочу, чтобы я мог отправить свою настройку в качестве ответа для вас (не хотел загромождать ваш вопрос) – dmahapatro