如何正确使用Scala Play Anorm和Option[String]插入NULL SQL

3

如果Option[String]为None,正确的插入方法是什么?下面的代码插入了一个空字符串,但这与mysql中的NULL不同。

根据partnerCode的内容事先构建SQL字符串是唯一的方法吗?哎呀...Anorm...

DB.withConnection { implicit connection =>

  val id: Option[Long] = SQL(
    """
    INSERT INTO users (email, partner_code, is_active, created, pass) VALUES ({email}, {partnerCode}, 0, NOW(), {pass})
    """
  ).on(
    'email -> user.email,
    'partnerCode -> user.partnerCode.getOrElse(""),  // FIXME: how to use NULL keyword instead of empty string? Is Anorm just this dumb?
    'pass -> hashPassword(user.password.get)
  ).executeInsert()

  id.get

}

'partnerCode -> user.partnerCode.getOrElse(null)' 看起来运行良好,但这看起来有些笨重。猜测 partnerCode 真的不应该是可选的。 - notbrain
1个回答

4

如果您导入 anorm._ 或者 anorm.toParameterValueNone 应该是可用的:

'partnerCode -> user.partnerCode

使用带插值的 SQL""",以及 import anorm._,对我来说不起作用 - http://stackoverflow.com/questions/40489039/using-optionbigdecimal-with-anorm. - Kevin Meredith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接