обновить однонаправленную проблему один на один - PullRequest
0 голосов
/ 12 мая 2011

У меня есть два класса домена:

class Domain1 {

  String val11
  String val12
  Domain2 domain2

  static constraints = {
  }
}

class Domain1Controller{

  /**
   * Create new Domain1 entity instance
   */
  def create = {
    def domain1 = new Domain1()
    def domain2 = Domain2.get(params.domain2)
    if(domain2!=null){
      domain1.domain2 = domain2
    }

    domain1.properties=params
    domain1.save(flush: true)

    String strJson = (domain1 as JSON)
    render strJson
  }

  /**
   * Update Domain1 entity fields values
   */
  def update = {
    Domain1 domain1 = Domain1.findById(params.id)
    params.remove("id")
    if (domain1 != null) {
      domain1.properties=params
      domain1.save(flush:true)
      String strJson = (domain1 as JSON)
      render strJson
    }
  }
}

class Domain2 {

  String val21
  String val22

  static constraints = {
  }
}

class Domain2Controller{

  /**
   * Create new Domain2 entity instance
   */
  def create = {
    def domain2 = new Domain2()          
    domain2.properties=params
    domain2.save(flush:true)
    String strJson = (domain2 as JSON)
    render strJson
  }

  /**
   * Update Domain2 entity fields values
   */
  def update = {
    Domain2 domain2 = Domain2.findById(params.id)
    params.remove("id")
    if (domain2 != null) {
      domain2.properties=params
      domain2.save(flush: true)
      String strJson = (domain2 as JSON)
      render strJson
    }
  }
}

Моя проблема в том, что когда я создаю связанные объекты, я не могу обновить domain1.

Я думаю, что причина может быть в save() методе ...может быть, нет

Кто-нибудь знает, почему я не могу обновить свойства Domain1?

Я использую плагин grails-1.3.2 и hbase-0.2.4.

PS hbase делаетне понимаю отображение ..

Спасибо за помощь.

1 Ответ

1 голос
/ 12 мая 2011

Учитывая исключение, которое вы указали в комментарии, я думаю, что проблема в том, что вы звоните domain1.properties=params.Карта свойств домена содержит некоторые конкретные ключи, и когда вы присваиваете ей params карту, эти конкретные (т. Е. class свойства здесь) отсутствуют, поэтому GORM не может получить к ним доступ.

Использовать метод bind ()привязать значения параметров к вашему объекту домена следующим образом:

    def domain1 = new Domain1()
    bind(domain1, params)
    def domain2 = Domain2.get(params.domain2)
    if(domain2!=null){
      domain1.domain2 = domain2
    }

    domain1.save(flush: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...