我尝试使用Apache Cayenne映射到具有json和jsonb数据类型的PostgreSQL架构。 Apache Cayenne建模器没有数据类型并更改为" OTHER"。当我执行SQL来重新创建数据库时(为了获得最大的兼容性),它会引发错误。
然后我尝试寻找替代方法,比如DataNucleus,映射到PostgreSQL的json和jsonb数据类型,但却发现Java驱动程序不支持PostgreSQL 9.x. (所以我假设DataNucleus JPO不支持PostgreSQL json和jsonb类型。)
那么,有哪些解决方案可以映射到PostgreSQL的json和jsonb,并与基于Java的应用程序的数据写入/检索进行互操作?
答案 0 :(得分:2)
读取和编写PostgreSQL JSON列在Apache Cayenne中开箱即用。您可以在Java端将它们映射为String属性。但那就是它。没有特别的魔力。我刚刚尝试使用GitHub主版本(Cayenne 4.0)和PostgreSQL 9.5 Docker镜像:
CREATE TABLE json_test (
id SERIAL,
x json
);
现在Cayenne代码:
ObjectContext context = ...
JsonTest t = context.newObject(JsonTest.class);
t.setX("{\"m\":1}");
context.commitChanges();
List<JsonTest> list =
ObjectSelect.query(JsonTest.class).select(context);
&#34;正向工程&#34;但是,由于Cayenne以独立于数据库的方式将其模型以JDBC的形式存储,因此数据库模式无法工作,因此没有关于特定于数据库类型的信息。