迁移到anorm2.4(带有播放2.4):ToStatement [T]和ToStatement [Option [T]] [英] Migrating to anorm2.4 (with play 2.4): ToStatement[T] and ToStatement[Option[T]]
本文介绍了迁移到anorm2.4(带有播放2.4):ToStatement [T]和ToStatement [Option [T]]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
直到播放2.3中包含的主动脉,我可以编写以下内容:
Up until the anorm included with play 2.3, I could write the following:
implicit val arbitraryClassToStatement = new ToStatement[ArbitraryClass] {
def set(
s: java.sql.PreparedStatement,
index: Int,
aValue: ArbitraryClass
)
: Unit = {
s.setString(
index,
ArbitraryClass.definingString
)
}
}
这将有助于插入
SQL("INSERT INTO SomeTable Values( {nonNullAc}, {possiblyNullAc} )" ).on(
'nonNullAc -> ArbitraryClass( "abcd" ),
'possiblyNullAc -> Option( ArbitraryClass( "abcd" ) )
)
表示将同时满足ArbitraryClass和Option [ArbitraryClass].出现以下错误时,似乎不再是这种情况了:
meaning that both ArbitraryClass and Option[ ArbitraryClass ] would be satisfied by it. This seems to no longer be the case as I get the following error:
[error] found : (Symbol, Option[models.Misc.Url])
[error] (which expands to) (Symbol, Option[java.net.URL])
[error] required: anorm.NamedParameter
有人可以指出我的正确处理方式吗?我希望代码的重复最少.
Can someone please point me to what's the right way to handle this? I'd want minimal duplication of code..
推荐答案
您需要为此创建一个ParameterMetaData[ArbitraryClass]
implicit object ArbitraryClassMetaData extends ParameterMetaData[ArbitraryClass] {
val sqlType = ParameterMetaData.StringParameterMetaData.sqlType
val jdbcType = ParameterMetaData.StringParameterMetaData.jdbcType
}
在这里,我只是重新获取ParameterMetaData[String]
Here I just retook the values of ParameterMetaData[String]
这篇关于迁移到anorm2.4(带有播放2.4):ToStatement [T]和ToStatement [Option [T]]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文