2015-08-03 9 views
5
eine Rep [Datum] Funktion definieren

Ich habe folgendes Postgres Spaltendefinition:glatt 3 automatisch generiert - Standardwert (Zeitstempel) Spalte, wie

record_time TIMESTAMP WITHOUT TIME ZONE DEFAULT now() 

Wie würde ich wo es zu glatt? Bitte beachten Sie, dass ich wünschte, den Standardwert durch die now() Funktion erzeugt abzubilden

heißt:

def recordTimestamp: Rep[Date] = column[Date]("record_time", ...???...) 

Sollte eine zusätzliche Definition gehen, wo die ...???... gerade befindet?

EDIT (1)

Ich will nicht

column[Date]("record_time", O.Default(new Date(System.currentTimeMillis()))) // or some such applicative generation of the date column value 

Antwort

3

ich ein Blog gefunden zu erklären, dass Sie die folgenden verwenden:

// slick 3 
import slick.profile.SqlProfile.ColumnOption.SqlType 
def created = column[Timestamp]("created", SqlType("timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP")) 

// slick 3 
def createdAt = column[Timestamp]("createdAt", O.NotNull, O.DBType("timestamp default now()")) 

siehe: http://queirozf.com/entries/scala-slick-dealing-with-datetime-timestamp-attributes

+0

Mit Bezug auf die blog, es war aber für slick2. Der Slick3 Weg, wieder aus dem Blog, ist: 'import slick.profile.SqlProfile.ColumnOption.SqlType' ' def erstellt = Spalte [Timestamp] ("erstellt", SqlType ("Timestamp nicht null Standard CURRENT_TIMESTAMP auf Update CURRENT_TIMESTAMP")) ' – user2829759

2

Slick 3 Beispiel

import slick.driver.PostgresDriver.api._ 
import slick.lifted._ 
import java.sql.{Date, Timestamp} 

/** A representation of the message decorated for Slick persistence 
    * created_date should always be null on insert operations. 
    * It is set at the database level to ensure time syncronicity 
    * Id is the Twitter snowflake id. All columns NotNull unless declared as Option 
    * */ 
class RawMessages(tag: Tag) extends Table[(String, Option[String], Timestamp)](tag, Some("rti"), "RawMessages") { 
    def id = column[String]("id", O.PrimaryKey) 
    def MessageString = column[Option[String]]("MessageString") 
    def CreatedDate = column[Timestamp]("CreatedDate", O.SqlType("timestamp default now()")) 
    def * = (id, MessageString, CreatedDate) 
} 
+0

Super, ist es möglich, für gemappte Tabellen zu tun? – Sergey

+0

Wenn es als eine Tabelle in PostgreSQL definiert ist, ja. Wenn es eine Ansicht ist, brauchen Sie vielleicht so etwas wie 'slick.jdbc.meta.MTable.getTables (Keine, Keine, Keine, Einige (Seq (" ANSICHT "," TABELLE "))' Das obige Beispiel [ist von] (https://stackoverflow.com/questions/28077228/scala-slick-database-views) –