使用光滑插入和更新数据时丢弃值

moh*_*hit 5 scala playframework-2.0 slick

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

例如,假设我有

case class MappedDummyTable(id: Int, .. 20 other fields, modified_time: Optional[Timestamp])

哪个映射Dummy在数据库中.modified_time由数据库管理.

问题是在insertor 期间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)

但这导致方法中的20个奇数字段map看起来很难看.

有没有更好的方法?

更新:

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