Saya menggunakan slick
dengan play2. Saya memiliki beberapa bidang dalam database yang dikelola oleh database. Saya tidak ingin membuat atau memperbaruinya, namun saya ingin mendapatkannya sambil membaca nilainya.
Misalnya, saya punya
case class MappedDummyTable(id: Int, .. 20 other fields, modified_time: Optional[Timestamp])
yang memetakan Dummy
dalam database. modified_time
dikelola oleh database.
Masalahnya adalah selama insert
atau update
, saya membuat instance MappedDummyTable
tanpa atribut waktu yang dimodifikasi dan meneruskannya ke apik untuk membuat/memperbarui seperti
TableQuery[MappedDummyTable].insert(instanceOfMappedDummyTable)
Untuk ini, Slick membuat kueri sebagai
Insert INTO MappedDummyTable(id,....,modified_time) Values(1,....,null)
dan memperbarui waktu_modifikasi sebagai NULL, yang tidak saya inginkan. Saya ingin Slick mengabaikan bidang saat memperbarui dan membuat.
Untuk update, saya bisa melakukannya
TableQuery[MappedDummyTable].map(fieldsToBeUpdated).update(values)
tapi ini menyebabkan 20 bidang ganjil dalam metode map
yang terlihat jelek.
Apakah ada cara yang lebih baik?
Memperbarui:
Solusi terbaik yang saya temukan adalah menggunakan banyak proyeksi. Saya membuat satu proyeksi untuk mendapatkan nilai dan proyeksi lainnya untuk memperbarui dan memasukkan data