2010-08-24 9 views
15

Piszę wielowątkową aplikację w Grails, a dodatkowe wątki potrzebują dostępu do GORM/Hibernate. Kiedy próbują uzyskać dostęp do GORM, pojawia się błąd "org.hibernate.HibernateException: Brak sesji hibernacji związanej z wątkiem, a konfiguracja nie pozwala na utworzenie tutaj nietransakcyjnego".Jak powiązać sesję hibernacji z wątkiem w Grails?

OK, wystarczy, czy ktoś poprowadzi mnie w najlepszy sposób, aby ustawić wątki, aby uzyskać dostęp? Komunikat o błędzie brzmi, jakbyś musiał zmienić niektóre opcje konfiguracji, ale wyczuwam, to nie jest takie proste ...

Odpowiedz

14
+6

Dwa kolejne linki są zepsute, czy zmieniła się lokalizacja? – Kevin

1

withNewSession również będzie działać. W moim przypadku mam aktualizacje o niskim priorytecie, gdzie ostatnia aktualizacja zawsze może "wygrać". Ważne jest także tutaj: version: false, aby uniknąć wyjątku StaleObjectException:

 Thread.start { 
     try { 
      Widget.withNewSession { 
       xxx() 
       log.info "Asynchronously did some updates." 
      } 
     } catch (Exception ex) { 
      log.error "Failed to asynchronously do something...", ex 
     } 
    } 
+0

Oto odpowiedź, której szukałem. _Way_ lepiej niż używając 'withTransaction', jeśli robisz jakieś aktualizacje w tle, które chcesz wyświetlać w trakcie ich tworzenia. – aroth

Powiązane problemy