Grails PreUpdateEventListener бесконечный цикл - PullRequest
0 голосов
/ 13 февраля 2012

В моем приложении есть PreUpdateEventListener. Похоже:

public boolean onPreUpdate(PreUpdateEvent event) {
  if (!needClasses.contains(entity?.class?.name))
   return false

  def entity = event.entity
  boolean rez = false
  entity.withSession {org.hibernate.Session session -> 
    def tryFind = Book.executeQuery("select s.id from ${entity.class.name} s where s.id=? ".toString(), [entity.id])
    rez = (tryFind != null && tryFind.size() > 0)
  } 

  return !rez
}

при выполнении Book.executeQuery он снова вызывает onPreUpdate, переходит на эту строку и так далее. наконец, это завершается с исключением переполнения стека этим бесконечным вызовом. кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 14 февраля 2012

Возможно ли, что сущность отличается от экземпляра Book?

Попробуйте использовать метод findAll () вместо executeQuery.

Book.findAll("From ${entity.class.name} s where s.id=? ", [entity.id])
//OR this is same as above
def exist = entity.class.get(entity.id)

Если сущность может быть другого типазатем Book, вместо вызова findAll для класса Book, вы должны вызывать его для соответствующего класса.

Сначала попробуйте использовать findAll, думаю, это решит вашу проблему.

...