0

У меня есть проблема с сохранением значений формы из двух доменных классовСохранение связанные с объектом в Грааль

Один класса

class Ip { 

String inetAddress 
String dns 
String os 



String toString(){ 
    "${inetAddress}" 
} 

Hoster hoster 

static constraints = { 
    .... 

и второй один только

class Hoster { 

    static HOSTER_OPTIONS = ["Name1", "Name2", "Name3"] 
String name; 

String toString(){ 
    "${name}" 
} 

List ips = new ArrayList() 
static hasMany = [ips : Ip] 

    static constraints = { 
    name(unique: true, blank: false, inList: HOSTER_OPTIONS) 
} 

У меня есть Контроллер, в котором я обрабатываю данные из формы

def systems = new Ip() 
systems.inetAddress = params.ip 
systems.dns = params.dns 
systems.os = params.os 

systems.hoster.name = params.hoster 
def result = systems.save(flush: true, failOnError: true) 

Но я не понял, что данные сохранены.

ответ

1

Вы не правильно связать классы домена в контроллере:

systems.hoster.name = params.hoster 

Вместо установки имени, вам необходимо установить экземпляр, который существует в базе данных:

systems.hoster = Hoster.findByName(params.hoster) 
+0

Спасибо! Но теперь я получаю другую ошибку: Класс: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExceptionMessage: Столбец «hoster_id» не может быть пустым – mbs

+0

Ваш хостел уже находится в базе данных? 'findByName' возвращает что-нибудь? –

+0

Да, хостер уже находится в базе данных. findByName возвращает имя, если оно существует иначе. – mbs