如何在我的Ebean实体中拥有适当的JsonNode字段?

时间:2014-01-27 05:14:39

标签: java json playframework jackson ebean

我在Play框架2.2.1下工作,我需要在我的数据模型中快速保存blob实体(需要为客户端保存的快速用户设置文档)。我已经做了很多次,但这次我希望Ebean为我照顾笨拙的工作。

我想让Ebean识别杰克逊的JsonNodeObjectNode作为列类型。这是我班级的样子:

@Entity
public class UserSettings extends Model {

    @Id
    @GeneratedValue
    private Long id;

    private JsonNode blob;

    // [... getters setters and whatnot ...]
}

我希望Ebean直接在我的表中创建一个TEXT列(使用PostgreSQL),并在需要时自动解析并字符串化。我还没有找到与此类功能相关的代码示例或文档。这看起来很基本,应该是可能的。还是我真的错了? Ebean已经支持了joda时间,看起来很奇怪它不能支持添加自定义对象类型或者json blob,对吗?

1 个答案:

答案 0 :(得分:2)

你可以看看: com.avaje.ebean.config.ScalarTypeConverter

或者替代 com.avaje.ebeaninternal.server.type.ScalarTypeBaseVarchar

也许还有一些例子可以解决......

com.avaje.ebeaninternal.server.type.ScalarTypeUUID com.avaje.ebeaninternal.server.type.ScalarTypeClob

第一个问题是您是将JSON存储为Clob还是Varchar(或者您可能需要2个不同的选项)。

  

更新:从Ebean ORM版本4.6.3开始,现在内置支持将JsonNodeMap<String,Object>存储到   各种数据库类型(Clob,Varchar,Blob加Postgres JSON和JSONB   数据类型)。

     

参考: