2014-04-15 9 views
5

Io uso slick2 + PostgreSQL 9.3 + play framework 2Come mappare manualmente il testo da stringa a postgresql invece di solo varchar (254)?

Il mio modello di dati è:

class Page(tag:Tag) extends Table[(Long,Long, String,String,String, Option[Long], Option[Long])](tag, "Page"){ 
    def id=column[Long]("ID", O.PrimaryKey) 
    def subId=column[Long]("subject") 
    def title=column[String]("Title", O.NotNull) 
    def describe=column[String]("Describe") 
    def profile=column[String]("Profile") 
    def icon=column[Long]("icon") 
    def resId=column[Long]("Picture") 
    def * = (id, subId,title, describe, profile,icon.?, resId.?) 
    def page_sub=foreignKey("PA_SU_FK", subId, subject)(_.id) 
    def page_res=foreignKey("PA_RE_FK", resId, resource)(_.id) 

} 

il problema è la colonna descrivere è String e sarà la mappatura come varchar (254) nel database. Ma in realtà questa colonna potrebbe essere molto lunga, voglio dire che può contenere 1000-3000 caratteri. come mapparlo manualmente al testo in Datamodel?

risposta

2

Questo dovrebbe funzionare per PostgreSQL:

def profile=column[String]("Profile", O.DBType("TEXT")) 

Oppure si potrebbe costruire un personalizzato TypeMapper, non ho mai costruito uno, ma ci sono un sacco di posti in giro, come this SO domanda o this domanda.

Spero che aiuti.