无法在Grails项目中与数据源连接

时间:2018-11-15 13:08:07

标签: grails

我已经创建了一个Grails 3.3.8项目。在application.yml文件中成功完成了数据源(Oracle)配置。但是当我在groovy类中使用数据源时,遇到了以下错误:

Caused by GroovyRuntimeException: Ambiguous method overloading for method groovy.sql.Sql#<init>.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
    [interface java.sql.Connection]
    [interface javax.sql.DataSource]

我的代码是:

package DATABASE_CONF
import groovy.sql.Sql  
/**
 *
 * @author CESC
 */
public class dbconn {

    def dataSource

    public String showname2() {

        def sql = new Sql(dataSource)
        def namestr = ""

        sql.eachRow('select * from TEST_TB') {
            tp -> 
            namestr = namestr + "<br>" + tp.NAME
        }  

        sql.close()
        return namestr          
    }       
}

1 个答案:

答案 0 :(得分:2)

您的类无法解析dataSource属性,因此出现了一个空且模棱两可的方法重载异常。

其原因可能是您的课程位于src文件夹中,而不参与bean(自动)接线。有几种方法可以解决该问题:

  1. 将您的课程放在/ grails-app / services so it will get the dataSource`下自动注入(推荐)
  2. dataSource声明为showname2()方法的参数,并在每次调用时将其显式传递。
  3. 为您的班级添加布线机制。我不是Spring方面的专家,但我认为它是注释和一些配置调整。