无法连接grails项目中的数据源

无法连接grails项目中的数据源,grails,Grails,我创建了一个Grails3.3.8项目。datasource Oracle配置已在application.yml文件中成功完成。但是,当我在groovy类中使用数据源时,我面临以下错误: Caused by GroovyRuntimeException: Ambiguous method overloading for method groovy.sql.Sql#<init>. Cannot resolve which method to invoke for [null] due

我创建了一个Grails3.3.8项目。datasource Oracle配置已在application.yml文件中成功完成。但是,当我在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          
    }       
}

您的类无法解析dataSource属性,因此出现null和ambigous方法重载异常

这样做的原因可能是您的类驻留在src文件夹中,并且不参与bean自动连接。处理这一问题有几种选择:

将您的类放在/grails app/services下,这样它将自动获得数据源“injected” 将数据源声明为showname2方法的参数,并在每次调用时显式地传递它。 将布线机制添加到类中。我不是Spring方面的专家,但我认为它是一个注释和一些配置调整。
您的类无法解析dataSource属性,因此出现null和ambigous方法重载异常

这样做的原因可能是您的类驻留在src文件夹中,并且不参与bean自动连接。处理这一问题有几种选择:

将您的类放在/grails app/services下,这样它将自动获得数据源“injected” 将数据源声明为showname2方法的参数,并在每次调用时显式地传递它。 将布线机制添加到类中。我不是Spring方面的专家,但我认为它是一个注释和一些配置调整。
我已在“服务”文件夹下创建了一个服务类。但同样的错误也出现了。package mis_gp2 import grails.gorm.transactions.Transactional import groovy.sql.sql@Transactional class AG_shownameService{def dataSource private List showname34{def myList=[]def sql=new SqldataSource def namestr=sql.eachRow'select*from TEST_TB'{tp->//namestr=namestr++tp.NAME myList请编辑您的原始帖子并将代码放在那里-读起来真的很困难。创建服务后是否重新启动了应用程序?我已在“服务”文件夹下创建了一个服务类。但出现了相同的错误。package mis_gp2 import grails.gorm.transactions.Transactional import groovy.sql.sql@Transactional class AG_shownameService{def dataSource private List showname34{def myList=[]def sql=new SqldataSource def namestr=sql.eachRow'select*from TEST_TB'{tp->//namestr=namestr++tp.NAME我的列表请编辑您的原始帖子并将代码放在那里-这样读起来真的很困难。您在创建服务后重新启动了应用程序吗?