Grails: No Session found for current thread報錯

設置一個Thread在背景跑動,

但是當要到DB查詢時就會報錯,

請大神們解答謝謝

Exception in thread "Thread-3" org.hibernate.HibernateException: No Session found for current thread
	at org.grails.orm.hibernate.GrailsSessionContext.currentSession(GrailsSessionContext.java:117)
	at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:721)
	at org.grails.orm.hibernate.HibernateSession.createQuery(HibernateSession.java:182)
	at org.grails.orm.hibernate.HibernateSession.createQuery(HibernateSession.java:175)
	at org.grails.datastore.gorm.finders.FindAllByFinder.buildQuery(FindAllByFinder.java:63)
	at org.grails.datastore.gorm.finders.FindAllByFinder$1.doInSession(FindAllByFinder.java:47)
	at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:319)
	at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:42)
	at org.grails.datastore.gorm.finders.FindAllByFinder.doInvokeInternal(FindAllByFinder.java:45)
	at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:254)
	at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:392)
	at org.grails.datastore.gorm.finders.FinderMethod$invoke$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.grails.datastore.gorm.finders.FinderMethod$invoke$0.call(Unknown Source)
	at org.grails.datastore.gorm.GormStaticApi$_methodMissing_closure2.doCall(GormStaticApi.groovy:181)
	at sun.reflect.GeneratedMethodAccessor271.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1427)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:420)
	at org.codehaus.groovy.runtime.metaclass.ClosureStaticMetaMethod.invoke(ClosureStaticMetaMethod.java:62)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:91)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
	at com.psquare.space1.Space1Controller$1.run(Space1Controller.groovy:675)
	at java.lang.Thread.run(Thread.java:748)




def static sendApi() {
        new Thread(new Runnable() {
            @Override
            void run() {
                Thread.sleep(10000)
                def tags = S1_Tag.findAllByUserIsNotNull()
                def currentPosition = S1_CurrentPos.findAllByTagInList(tags)
                def exclusion = S1_Exclusion.findAllByIsSelected(1)
                def alert = LocatorStatus.findAllByStatusNotEqual(1);
                def object = new JSONObject()

                def temp;
                def temp1;

                def objArr = new JSONArray();
                def objArr1 = new JSONArray();

                alert.each { val ->
                    temp1 = new JSONObject();
                    temp1.put("type", "device_down")
                    temp1.put("locator_id", val.id)
                    temp1.put("connection_status", val.status.toString())
                    temp1.put("floor", val.floor.toString())
                    temp1.put("name", val.name.toString())
                    temp1.put("time", new Date(val.time.getTime()).format("yyyy-MM-dd HH:mm:ssZ"))

                    objArr1.put(temp1)
                }

 

看下这篇文章是否对你有帮助 https://blog.csdn.net/pmt1982/article/details/38731127