在我们的项目中,我们有一个自定义映射到我们的一个类(Muid
),如下所示:
implicit val muidToStatement: ToStatement[Muid] = new ToStatement[Muid] {
def set(s: PreparedStatement, index: Int, muid: Muid): Unit = s.setObject(index, muid.uuid)
}
ParameterMetaData实现:
implicit object MuidClassMetaData extends ParameterMetaData[Muid] {
val sqlType = ParameterMetaData.StringParameterMetaData.sqlType
val jdbcType = ParameterMetaData.StringParameterMetaData.jdbcType
}
我们需要将null
设置为可选列,例如:
SQL(sql).on(
'id -> id,
'created_by_id -> createdById,
'organization_id -> organizationId,
'parent_folder_id -> optionalParentFolderId, // <= Optional and nullable column
'name -> name
)
这曾经用于Anorm 2.3,我现在得到的是:
org.postgresql.util.PSQLException: ERROR: column "parent_folder_id" is of type uuid but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
我怀疑必须修复映射,但是,我没有找到很多关于可选值的自定义映射的文档。
此外,它似乎与可选java.util.UUID
映射有关,因为我在Muid
的每种情况下都得到相同类型的错误(这是UUID的简单包装器) )
解决这个问题的正确方法是什么?
我可以在不修改所有查询的情况下解决问题的唯一方法是将?stringtype=unspecified
添加到JDBC连接URL。但是,这感觉不对。
谢谢,
P.S。我对Play&amp; amp;对不起,Anorm。