كيفية تأسيس جلسة السبات ضمن برنامج نصي الكؤوس المقدسة

StackOverflow https://stackoverflow.com/questions/675514

  •  21-08-2019
  •  | 
  •  

سؤال

والسيناريو الكؤوس المقدسة التالية:

// Import.groovy

includeTargets << grailsScript("Bootstrap")

target(main: "Import some data...") {
    depends(bootstrap)

    def Channel = grailsApp.classLoader.loadClass("content.Channel")

    def c 

    // works: saving a valid Channel succeeds
    c = Channel.newInstance(title:"A Channel", slug:"a-channel", position:0).validate()

    // doesn't work: saving an invalid Channel fails with exception
    c = Channel.newInstance().validate()

    // this line is never reached due to exception
    println(c.errors)

}

setDefaultTarget(main) 

وفشل مع استثناء:

<اقتباس فقرة>   

خطأ النصي تنفيذ استيراد: org.hibernate.HibernateException: لا جلسة السبات بد أن الخيط، والتكوين لا يسمح إنشاء واحدة غير المعاملات هنا

وعندما يتم استدعاء التحقق من صحة () على كائن مجال غير صالح. أود أن الناتج رسائل الخطأ عندما فشل التحقق من الصحة، ولكن يبدو أنني سوف تحتاج إلى تأسيس جلسة السبات من أجل القيام بذلك. أي شخص يعرف وسيلة للحصول على هذا الماضي؟

هل كانت مفيدة؟

المحلول

والعثور على RunScript.groovy حيث يضع الدورة السبات بالنسبة لك، ثم يدير البرامج النصية التي تحددها كوسائط. كان علي أن أغير مصدر من السيناريو غانت (أعلاه) ببساطة:

// Import.groovy

def Channel = grailsApp.classLoader.loadClass("content.Channel")

def c 
c = Channel.newInstance(title:"A Channel", slug:"a-channel", position:0).validate()
c = Channel.newInstance().validate()
println(c.errors)

وأنا قادرة على تشغيله مثل ذلك:

<اقتباس فقرة>   

و$> الكؤوس المقدسة البرامج النصية من النصي تشغيل / Import.groovy

نصائح أخرى

وأنا أفعل شيئا من هذا القبيل، وأنه يعمل بالنسبة لي ...

// Import.groovy

includeTargets << grailsScript("Bootstrap")

target(main: "Import some data...") {
    depends(bootstrap)

    // added this ------------------------------------------------------
    def sessionFactory = appCtx.getBean("sessionFactory")
    def session = SessionFactoryUtils.getSession(sessionFactory, true)
    TransactionSynchronizationManager.bindResource(
        sessionFactory, new SessionHolder(session))
    // added this ------------------------------------------------------

    def Channel = grailsApp.classLoader.loadClass("content.Channel")

    def c 

    // works: saving a valid Channel succeeds
    c = Channel.newInstance(title:"A Channel", slug:"a-channel", position:0).validate()

    // doesn't work: saving an invalid Channel fails with exception
    c = Channel.newInstance().validate()

    // this line is never reached due to exception
    println(c.errors)

}

setDefaultTarget(main)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top