![](/img/trans.png)
[英]get java.math.BigInteger from executeInsert() using Anorm in scala
[英]Anorm Scala Difference between executeUpdate and executeInsert
我一直在讨论使用executeUpdate()
而不是executeInsert()
之间的区别。
在下面的代码中,我使用了executeInsert()
def addEntry(day: DateMidnight, create_time: DateTime, points: Long, src: String) = DB.withTransaction { implicit connection =>
Logger.debug("I got here")
SQL(
"""
INSERT INTO density_cache(day_of, create_time, points, src)
VALUES ({day_of}, {create_time}, {points}, {src})
"""
).on(
'day_of -> day,
'create_time -> create_time,
'points -> points,
'src -> src
).executeInsert()
Logger.debug("Got to 2nd step")
}
我得到以下问题:Java.lang.RuntimeException:TypeDoesNotMatch(无法转换2013-04-15 13:58:46.0:类java.sql.Timestamp为Long列ColumnName(density_cache.day_of,Some(day_of)))
但是当我切换到executeUpdate()
,它工作正常。
不同之处在于executeInsert
将返回自动生成的密钥(如果有的话)。
如果要插入具有自动生成的
Long
主键的数据,则可以调用executeInsert()
。 如果您有多个生成的密钥,或者它不是Long,则可以通过ResultSetParser
传递executeInsert
以返回正确的密钥。
在你的情况下,我猜/假设你没有自动递增的主键,因此它不能与executeInsert()
。 如果您有,那么您可能必须传递具有正确类型的ResultSetParser
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.