scala - 使用 slick 插入和更新数据时丢弃值

标签 scala playframework-2.0 slick

我正在使用 slick与 play2。
我在数据库中有多个由数据库管理的字段。我不想创建或更新它们,但是我想在读取值时获取它们。

例如,假设我有
case class MappedDummyTable(id: Int, .. 20 other fields, modified_time: Optional[Timestamp])
哪些 map Dummy在数据库中。 modified_time由数据库管理。

问题出在insert期间或 update , 我创建了一个 MappedDummyTable 的实例没有修改时间属性并将其传递给 slick 以进行创建/更新,例如
TableQuery[MappedDummyTable].insert(instanceOfMappedDummyTable)
为此,Slick 创建查询为


Insert INTO MappedDummyTable(id,....,modified_time) Values(1,....,null)

并将 modified_time 更新为 NULL,这是我不想要的。我希望 Slick 在更新和创建时忽略这些字段。

对于更新,我可以做
TableQuery[MappedDummyTable].map(fieldsToBeUpdated).update(values)
但这会导致 map 中有 20 个奇数字段看起来很丑的方法。

有没有更好的办法?

更新:

我发现的最佳解决方案是使用多重投影。我创建了一个投影来获取值,另一个投影来更新和插入数据

最佳答案

如果您不想编写像 row => (row.id,...other 20 fields) 这样的代码,也许您需要在表中编写一些触发器。

或尝试使用 None而不是 null ?

关于scala - 使用 slick 插入和更新数据时丢弃值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910943/

相关文章:

algorithm - Scala:比较一个巨大列表中的所有元素

playframework - sbt-native-packager 插件在 Play 项目的 rpm 构建中出错

java - java中如何将上传的多个pdf文件存储到特定位置?

mysql - Slick:如何从 MySQL 读取 Blob?

scala - 当我发现 Scala 中的数据状态不一致时,应抛出哪个异常?

json - 如何在 circe 中覆盖默认编解码器?

java - 验证不适用于 Play Framework 2 中的嵌套对象

scala - 达到 float 的队列时该怎么办?

sql - 在 Play! 中为 H2 设置 IGNORECASE 和其他选项!框架测试

scala - 这是Scala中一种更高种类的类型吗?