2010-01-04 2 views
3
altEmailAddress(blank: true, nullable: true, validator: { 
    if (it == null || it == '') { 
     return true 
    } else { 
     return (User.countByEmailAddress(it) > 0 && User.countByAltEmailAddress(it) > 0) 
    } 
} 

Trace de la pile:Obtenir débordement de la pile lors de l'inclusion dans la requête Grails validateur

 
Testcase: testFindValidEmailAddress took 0.429 sec 
    Caused an ERROR 
null 
java.lang.StackOverflowError 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36) 
    at com.clearlyINNOVATIVE.model.User$__clinit__closure7_closure13.doCall(User.groovy:36)
+0

Stack trace s'il vous plaît –

Répondre

8

Vous devez utiliser withNewSession - voir http://adhockery.blogspot.com/2010/01/upgrading-grails-11-12.html

Edit: ajouté pour 1.1.x:

Si vous n'utilisez pas encore 1.2 et withNewSession() n'est pas disponible, vous pouvez le connecter vous-même dans BootStrap:

import org.hibernate.Session 
import org.springframework.orm.hibernate3.HibernateCallback 
import org.springframework.transaction.support.TransactionSynchronizationManager 
import org.springframework.orm.hibernate3.SessionHolder 
import org.springframework.orm.hibernate3.HibernateTemplate 

class BootStrap { 

    def grailsApplication 
    def sessionFactory 

    def init = { servletContext -> 
     for (domainClass in grailsApplication.domainClasses) { 
     domainClass.metaClass.static.withNewSession = { Closure callable -> 
      HibernateTemplate template = new HibernateTemplate(sessionFactory) 
      SessionHolder sessionHolder = TransactionSynchronizationManager.getResource(sessionFactory) 
      Session previousSession = sessionHolder?.session 
      try { 
       template.alwaysUseNewSession = true 
       template.execute({ Session session -> 
        sessionHolder.addSession(session) 
        callable(session) 
       } as HibernateCallback) 
      } 
      finally { 
       if (previousSession) { 
        sessionHolder.addSession(previousSession) 
       } 
      } 
     } 
     } 
    } 

    def destroy = {} 
} 
+0

Existe-t-il une alternative? Je n'ai pas mis à niveau vers 1.2, toujours sur 1.1.2 –

Questions connexes