我正在游戏框架2.2.1下工作,并且我的数据模型中需要一个快速的Blob保存实体(需要为客户端保存的快速用户设置文档)。我已经做了很多次,但是这次我希望Ebean为我完成繁重的工作。
我想让Ebean将jackson的JsonNode
和ObjectNode
识别为列类型。这是我班的样子:
@Entity
public class UserSettings extends Model {
@Id
@GeneratedValue
private Long id;
private JsonNode blob;
// [... getters setters and whatnot ...]
}
我希望Ebean在表中直接创建一个TEXT列(使用PostgreSQL),并在需要时自动解析和字符串化该列。我还没有找到与此功能有关的代码示例或文档。这看起来很基础,应该有可能。还是我真的错了?
Ebean已经支持joda time,似乎很奇怪,它不支持添加自定义对象类型或json blob,对吗?
最佳答案
您可以看一下:
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开始,现在内置了将JsonNode
和Map<String,Object>
都存储到其中的支持。
各种数据库类型(Clob,Varchar,Blob以及Postgres JSON和JSONB
数据类型)。
参考:
https://github.com/ebean-orm/avaje-ebeanorm/issues/297
https://github.com/ebean-orm/avaje-ebeanorm/issues/299