【发布时间】:2015-01-10 17:16:57
【问题描述】:
我在 play2 中使用slick。
我在数据库中有多个由数据库管理的字段。我不想创建或更新它们,但是我想在读取值时获取它们。
例如,假设我有
case class MappedDummyTable(id: Int, .. 20 other fields, modified_time: Optional[Timestamp])
在数据库中映射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 个奇怪的字段,看起来很难看。
有没有更好的办法?
更新:
我发现的最佳解决方案是使用多重投影。我创建了一个投影来获取值,另一个来更新和插入数据
【问题讨论】:
标签: scala playframework-2.0 slick