2017-12-09 13 views
0

私のデータベースのテーブルには、jsonタイプのカラムがあります。私はSlickでテーブルを定義するときにどのデータ型を使用すべきですか? 現在、特定の列に対して、私はそれがhereを示唆していることを発見してからBlobを使用します。 Playフレームワーク(play.libs.json)が提供されているjsonライブラリクラスを使用できるかどうかを知りたいですか?もしそうなら、どうですか?暗黙のマッパーが必要ですか?jsonのSlick Table定義で使用するデータ型は何ですか?

答えて

1

SlickはSlickがサポートしていないcustom data type mapperを提供しています。私の場合は :保存JSONはJValueとして使用してデータベースに、コード内の文字列(私はjson4sを使用しています)として:

object JsonMapper{ 
    import driver.api._ 

    implicit val jsonMapper = MappedColumnType.base[JValue, String](
     { json => write(framesType) /* json writer */ }, 
     { str =>parse(str) /*json parser */ } 
    ) 
    } 

import JsonMapper._ 

    case class Info(id:Int, json:JValue) 
    class DBTable(tag:Tag) extends Table[Info](tag, "info"){ 
    val id = column[Int]("id") 
    val json = column[JValue]("json") 
    def * = (id ,json) <> (Info.tupled, Info.unapply) 
    } 

私は、これはあなたのケースのために働くことを確認していません。しかし、これはSlickのカスタムデータ型をマップする方法です。

関連する問題