Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何解决“的类型不匹配”;连接=>;[A] ";用JDBC玩?_Scala_Playframework - Fatal编程技术网

Scala 如何解决“的类型不匹配”;连接=>;[A] ";用JDBC玩?

Scala 如何解决“的类型不匹配”;连接=>;[A] ";用JDBC玩?,scala,playframework,Scala,Playframework,我正在构建一个相对简单的RESTAPI,最后我决定在Play框架中使用Anorm作为我的db access库。但是,我在使用基本列表查询时遇到了一些问题。我确信这是一个简单的解决方案,但是我还没有找到任何关于这个问题的文档/解决方案。在其他示例中,代码对最后调用/返回的query.as(parser*)函数或多或少做了相同的事情 问题是我的函数(根据IntelliJ)正在查找Connection=>Unit类型,而不是我想要的Connection=>Seq[MyType]类型。这是我的密码: c

我正在构建一个相对简单的RESTAPI,最后我决定在Play框架中使用Anorm作为我的db access库。但是,我在使用基本列表查询时遇到了一些问题。我确信这是一个简单的解决方案,但是我还没有找到任何关于这个问题的文档/解决方案。在其他示例中,代码对最后调用/返回的
query.as(parser*)
函数或多或少做了相同的事情

问题是我的函数(根据IntelliJ)正在查找
Connection=>Unit
类型,而不是我想要的
Connection=>Seq[MyType]
类型。这是我的密码:

case class MyType(id: Int, name: String, createdAt: LocalDateTime, updatedAt: LocalDateTime)
class MyTypeRepository@Inject()(
dbApi:dbApi
)(隐式ec:DBExecutionContext){
private val db=dbApi.database(“默认值”)
私有val解析器:RowParser[MyType]={
为了{

idAnorm结果被分配给一个
val
,而不是返回,因此编译器会正确地推断返回的是
单元

删除对
val result
的赋值,因此
查询将返回as(..)
(而不是本地赋值)

def list():Seq[MyType]={
db.withConnection{implicit conn=>
val query=SQL(“从mytype中选择*)
as(解析器*)
}
}
Anorm查询可以简化为:

def list():Seq[MyType]=db.withConnection{implicit conn=>
SQL“从mytype.as中选择*(解析器*)
}
class MyTypeRepository @Inject()(
    dbApi: DBApi
)(implicit ec: DBExecutionContext) {
    private val db = dbApi.database("default")

    private val parser: RowParser[MyType] = {
        for {
            id <- int("mytpe.id")
            name <- str("mytype.name")
            createdAt <- get[LocalDateTime]("mytype.created_at")
            updatedAt <- get[LocalDateTime]("mytype.updated_at")
        } yield (MyType(id, name, createdAt, updatedAt))
    }

    def list(): Seq[MyType] = {
        db.withConnection { implicit conn =>
            val query = SQL("SELECT * FROM mytype")
            val result = query.as(parser *)
        } // Type mismatch error is showing up here
    }
}