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