Grails GORM - форсировать оператор обновления, даже если GORM не считает, что экземпляр грязный - PullRequest
0 голосов
/ 06 июня 2019

Я столкнулся с ситуацией, когда GORM не обнаруживает, что объект изменился, и поэтому не вызывает сбоев и не создает SQL-оператор UPDATE. Другими словами:

 //by the time I get here, it doesn't do anything good or bad
 team.save(failOnError:true, flush:true)
 //doesn't throw an error, doesn't log an UPDATE statement

Есть ли способ заставить GORM выполнить оператор обновления независимо от того, считает ли 1005 * экземпляр, нуждающийся в обновлении?

1 Ответ

0 голосов
/ 06 июня 2019

Это происходит, если значения установлены, когда экземпляр не присоединен к сеансу гибернации или когда он находится в режиме только для чтения. Если вы установили свойства для такого экземпляра, а затем решили сохранить его, вы можете сделать это:

  <A Domain Csass nam reference here>.withSession{session->
      if(!item.isAttached()){
           item.attach();
      }
      else if(session.isReadOnly(item)){
            session.setReadOnly(item,false)
       }
        item.properties=item.properties // force gorm to see changed properties; comes with data binding overhead though
       item.save(failOnError:true)//should generate update now
  }
...