Grails 3 run-script - 脚本执行错误:没有transactionManager

时间:2016-11-17 05:41:40

标签: grails groovy datasource transactional

我正在尝试在Grails 3中使用run-script命令和我的一个服务。

我的所有服务都标有@Transactional标签。我在src / main / groovy文件夹中创建了一个“独立”groovy文件,声明了其中一个服务,并希望在其上调用一个方法。

我的独立groovy文件声明了一个dataSource并将其设置为:

def dataSource = new OracleDataSource(URL: 'jdbc:oracle:thin:@localhost:1521:local', user: 'test', password: '');

我可以通过执行以下操作验证它是否可以在独立的groovy文件中运行:

        sql = new Sql(dataSource);

    sql.eachRow("SELECT COUNT(*) AS MYCOUNT FROM MYTABLE") {
        myCount = it."MYCOUNT";
    }

它工作正常。

然后我将dataSource作为参数传递给我的服务类。请注意,当我将Grails应用程序作为“普通”Grails应用程序运行时,我不需要这样做,因为服务“已经知道”如何初始化它具有的dataSource属性。但是当使用“grails run-script”运行我的独立groovy文件并想要使用该服务时,我这样做:

applicationFunctionService.setSession(dataSource);

但是之后当我在我的服务上调用一个涉及进行SQL /数据库交互的方法时,它会抛出此错误(当使用grails run-script时)

Script execution error: No transactionManager was specified. Using @Transactional or @Rollback requires a valid configured transaction manager. If you are running in a unit test ensure the test has been properly configured and that you run the test suite not an individual test method.
:runScript FAILED

请注意,我的意图是不要按照说法进行测试...我实际上想要一个“独立”的groovy文件,它在Grails-context中调用我的Grails服务。我还希望将服务保留为@Transactional标签。虽然我不介意在我独立的常规课程的背景下“关闭@Transaction”,如果可能的话。

有没有办法处理这个错误?

0 个答案:

没有答案