【问题标题】:Slick code generator - primary key as optionSlick 代码生成器 - 主键作为选项
【发布时间】:2016-01-17 00:10:06
【问题描述】:

我在 Play for scala 2.4 中使用灵活的代码生成器从 SQL 数据库生成类。我想知道如何生成主键定义为Option 的代码,所以当我插入新记录时,我可以用None 代替主键。

假设我有一张桌子

OrderItem
----------
orderItemId: int
name: varchar

现在我必须像这样创建实例:

val item = new OrderItem(0, "Item name")
db.run(orderItems += item)

它有效,但零只是奇数,所以我的目标是

val item = new OrderItem(None, "Item name")
db.run(orderItems += item)

这可能吗?使用Option[Int] 类型的PK,我应该也可以重用这个类,例如用于表单映射。

【问题讨论】:

    标签: scala playframework slick


    【解决方案1】:

    根据example in slick documentation只需将rawType改为

        override def rawType = {
          if (model.options.contains(ColumnOption.PrimaryKey)) {
            "Option[" + super.rawType + "]"
          } else {
            super.rawType
          }
        }
    

    更新

    我的问题是重复的:Customizing Slick Generator

    Slick 代码生成器已经实现了这个:

    new SourceCodeGenerator(model){
        override def Table = new Table(_){
            override def autoIncLastAsOption = true
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2017-02-28
      • 2015-07-27
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多