gpt4 book ai didi

postgresql - 为什么 Anorm 在插入主键作为文本时抛出 TypeDoesNotMatch 异常?

转载 作者:行者123 更新时间:2023-11-29 11:39:09 24 4
gpt4 key购买 nike

我在 Postgres 9.4 中有一个表,它以电子邮件地址作为主键。然后我使用 Anorm 执行以下操作

 DB.withConnection { implicit connection =>
SQL"insert into member_login_email(email, password) values ($email, $password)".executeInsert()
}

执行此操作时,正确的值将输入到表中,但会抛出 TypeDoesNotMatch 运行时异常:

    at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.7.jar:2.3.7]
at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.7.jar:2.3.7]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.7.jar:2.3.7]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.7.jar:2.3.7]
at scala.Option.map(Option.scala:145) [scala-library-2.11.1.jar:na]
Caused by: java.lang.RuntimeException: TypeDoesNotMatch(Cannot convert dsfsfadsf@ddd.com: class java.lang.String to Long for column ColumnName(member_login_email.email,Some(email)))
at scala.sys.package$.error(package.scala:27) ~[scala-library-2.11.1.jar:na]
at anorm.Sql$.anorm$Sql$$as(Anorm.scala:472) ~[anorm_2.11-2.3.7.jar:2.3.7]
at anorm.Sql$class.executeInsert(Anorm.scala:350) ~[anorm_2.11-2.3.7.jar:2.3.7]
at anorm.SimpleSql.executeInsert(Anorm.scala:190) ~[anorm_2.11-2.3.7.jar:2.3.7]
at repository.MemberLoginEmailRepository$$anonfun$create$1.apply(MemberLoginEmailRepository.scala:17) ~[classes/:na]

似乎 Anorm 期望主键是 Long 类型。有没有办法让 Anorm 在不抛出异常的情况下接受文本类型的主键?

我看过 source code for Anorm但一直在努力寻找实际发生的地方。

最佳答案

默认情况下,executeInsert() 使用 ResultSetParser[Option[Long]] 来解析从数据库返回的主键。从 scaladocs 可以看出:

def executeInsert[A](generatedKeysParser: ResultSetParser[A] = SqlParser.scalar[Long].singleOpt)

要使它与 String 主键一起使用,您可以改用它:

executeInsert(SqlParser.scalar[String].singleOpt)

这将返回一个 Option[String]

关于postgresql - 为什么 Anorm 在插入主键作为文本时抛出 TypeDoesNotMatch 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com