scala – 如何在执行批量插入光滑3.x时省略列值?
发布时间:2020-12-16 18:36:51 所属栏目:安全 来源:网络整理
导读:我有一个JOURNAL表,其中INSERT_DATE列应由DB填充,插入记录时的当前日期和时间.我没有故意使用TIMESTAMP类型,因为它的范围有限. class Journal(tag: Tag) extends Table[JournalEntry](tag,"JOURNAL") { def id = column[Int]("ID",O.PrimaryKey,O.AutoInc) d
我有一个JOURNAL表,其中INSERT_DATE列应由DB填充,插入记录时的当前日期和时间.我没有故意使用TIMESTAMP类型,因为它的范围有限.
class Journal(tag: Tag) extends Table[JournalEntry](tag,"JOURNAL") { def id = column[Int]("ID",O.PrimaryKey,O.AutoInc) def insertDate = column[OffsetDateTime]("INSERT_DATE",SqlType("DateTime default CURRENT_TIMESTAMP"))(localDateTimeColumnType) def valueDate = column[OffsetDateTime]("VALUE_DATE",SqlType("DateTime"))(localDateTimeColumnType) def amount = column[Int]("AMOUNT") def note = column[String]("NOTE",O.Length(100)) def * : ProvenShape[JournalEntry] = (id.?,insertDate.?,valueDate,amount,note) <> ((JournalEntry.apply _).tupled,JournalEntry.unapply) } 我还实现了一个case类: case class JournalEntry(id: Option[Int],insertDate: Option[LocalDateTime],valueDate: LocalDateTime,amount: Int,note: String) 当我的应用程序启动时,我使用随机测试数据填充数据库: TableQuery[Journal] ++= Seq.fill(1000)(JournalEntry(None,Some(LocalDateTime.now()),LocalDateTime.of(2006 + Random.nextInt(10),1 + Random.nextInt(11),1 + Random.nextInt(27),Random.nextInt(24),Random.nextInt(60)),Random.nextInt(),TestDatabase.randomString(100))) 这可行,但INSERT_DATE由JVM设置,而不是由数据库设置. Slick文档说如果想要插入默认值,则应省略列.但是,如果我有一个案例类,我就不知道如何省略列. 我也发现了这个SO post,但无法弄清楚如何在我的上下文中使用它. 有任何想法吗? 解决方法
Slick文档在第一个代码片段
here中给出了这种遗漏的示例.按照步骤或
the cvogt’s answer,您将得到解决方案:
TableQuery [Journal] .map(je =>(je.id,je.valueDate,je.amount,je.note))= Seq.fill(1000)((None,LocalDateTime.of(2006 Random.nextInt(10) ),1 Random.nextInt(11),1 Random.nextInt(27),TestDatabase.randomString(100))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |