INSERT_DATE sütununun, kayıt eklendiğinde geçerli tarih ve saat ile DB tarafından doldurulması gereken bir JOURNAL tablosum var. Sınırlı aralığı nedeniyle TIMESTAMP tipini amaç doğrultusunda kullanmamıştım.Toplu yerleştirme kayması yaparken sütun değerleri nasıl atılır 3.x?
class Journal(tag: Tag) extends Table[JournalEntry](tag, "JOURNAL") {
def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
def insertDate = column[OffsetDateTime]("INSERT_DATE", SqlType("DateTime default CURRENT_TIMESTAMP"))(localDateTimeColumnType)
def valueDate = column[OffsetDateTime]("VALUE_DATE", SqlType("DateTime"))(localDateTimeColumnType)
def amount = column[Int]("AMOUNT")
def note = column[String]("NOTE", O.Length(100))
def * : ProvenShape[JournalEntry] = (id.?, insertDate.?, valueDate, amount, note)
<> ((JournalEntry.apply _).tupled, JournalEntry.unapply)
}
Ben de bir durum sınıf uygulamak: my app başladığında
case class JournalEntry(id: Option[Int], insertDate: Option[LocalDateTime],
valueDate: LocalDateTime, amount: Int, note: String)
, ben rastgele test verileri ile DB doldurmak:
TableQuery[Journal] ++= Seq.fill(1000)(JournalEntry(None, Some(LocalDateTime.now()),
LocalDateTime.of(2006 + Random.nextInt(10), 1 + Random.nextInt(11),
1 + Random.nextInt(27),Random.nextInt(24), Random.nextInt(60)), Random.nextInt(),
TestDatabase.randomString(100)))
Bu çalışır, ancak INSERT_DATE ist Veritabanı tarafından değil JVM tarafından ayarlanır. Slick dokümanları, eklenecek varsayılan değerin istenmesi durumunda sütunların atlanması gerektiğini söylüyor. Ama ben bir vaka sınıfım varsa sütunları nasıl attığımı anlamıyorum.
Bu SO post numaralı telefonu da buldum ancak içeriğimde nasıl kullanacağımı anlamadım.
Herhangi bir fikrin var mı?
Benim için çalışmıyor: '[error] Slick, verilen türlerin nasıl eşleneceğini bilmiyor. [error] Olası nedenler: Tablodaki [T] T, * projeksiyonunuzla eşleşmiyor. Veya bir sorguda desteklenmeyen bir tür (örneğin, scala listesi) kullanın. [error] Gerekli seviye: slick.lifted.FlatShapeLevel [error] Kaynak türü: (slick.lifted.Rep [Int], slick.lifted.Rep [java.time.LocalDateTime], slick.lifted.Rep [Int] , slick.lifted.Rep [String]) [error] Paketlenmemiş tip: T [error] Paket türü: G [error] TableQuery [Günlük] .map (je => (je.id, je.valueDate, je .amount, je.note)) ++ = ' – binford