2012-03-11 5 views
0

Я использую grails 1.3.7 с плагином аудита. Я хочу зафиксировать событие входа пользователя, например «user: PSam, зарегистрированный в ..» в журналах, и поскольку в плагине не определено onLoad, я добавляю его в классы домена и заполняю свою запись таблицы аудита в этом случае. Так в Grails классе домена пользователя я следующимВставка записи аудита для входа пользователя

def onLoad = { 
     try { 
     Graaudit aInstance = new Graaudit(); 
     aInstance.eventType= "User Log in" 
     aInstance.eventDescription = "User logged in" 
     aInstance.user_id = username 
     aInstance.save(flush:true); 
      println "username="+username 
      println aInstance; 
     } 
     catch (e){ 
      println(e.getMessage()) 
     } 
    } 

меня возникли две проблемы здесь ... 1) свойство имя пользователя определено в данном домене класса как атрибут придумывает утратившим 2) его выдает исключение: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

Есть ли другой подход к этому вопросу? , а также можете использовать таблицу audi_log плагинов для заполнения записей событий onLoad()?

Заранее спасибо

ответ

1

Wrap yoyr логика в транзакции:

def onLoad = { 
    Graaudit.withTransaction { 
     try { 
     Graaudit aInstance = new Graaudit(); 
     aInstance.eventType= "User Log in" 
     aInstance.eventDescription = "User logged in" 
     aInstance.user_id = username 
     aInstance.save(); 
     println "username="+username 
     println aInstance; 
     } 
     catch (e){ 
     println(e.getMessage()) 
     } 
    } 
} 
+0

Большого спасибо, что была проблемой и решить ее ... –

Смежные вопросы