EbeanでJson型を扱う

環境 : Play Framework 2.6play-ebean 4.1.4PostgreSQL


EbeanでJson型を扱いたい。
アノテーションとしては、@DbJsonB@DbJsonの2つが用意されている。

PostgreSQLにおけるjson型とjsonb型の違いはこちら(https://www.postgresql.jp/document/10/html/datatype-json.html)の解説を参照。

@DbJsonBアノテーションを利用した場合はjsonbとしてDDLが作成されるが、@DbJsonアノテーションを利用する場合はstorage引数によりDDLの型を変更できる。

バリエーションは以下の通り。

  • @DbJson(storage = DbJsonType.JSON)
  • json
  • @DbJson(storage = DbJsonType.JSONB)
  • jsonb
  • @DbJson(storage = DbJsonType.VARCHAR)
  • varchar(3000)
  • @DbJson(storage = DbJsonType.CLOB)
  • text
  • @DbJson(storage = DbJsonType.BLOB)
  • bytea

上記の環境の場合、DDLの型がjsonまたはjsonbとなるような設定の場合、そのテーブルへのデータ追加時にエラーが発生し実用はできなかったので注意。

参考(https://ebean.io/docs/features/json-in-db)