Я использую slick
с play2. У меня есть несколько полей в базе данных, которыми управляет база данных. Я не хочу их создавать или обновлять, однако я хочу получить их при чтении значений.
Например, предположим, что у меня есть
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)
и обновляет модифицированное_время как NULL, чего я не хочу. Я хочу, чтобы Slick игнорировал поля при обновлении и создании.
Для обновления я могу сделать
TableQuery[MappedDummyTable].map(fieldsToBeUpdated).update(values)
но это приводит к 20 нечетным полям в методе map
, что выглядит некрасиво.
Есть ли лучший способ?
Обновлять:
Лучшим решением, которое я нашел, было использование множественной проекции. Я создал одну проекцию для получения значений, а другую для обновления и вставки данных.