使用无增强器的Datanucleus将JSON字符串持久化到OrientDB

使用无增强器的Datanucleus将JSON字符串持久化到OrientDB,json,datanucleus,Json,Datanucleus,我正在尝试将一个json字符串(myobject.toJson()以json形式为我提供对象)持久化到orientdb。但是我用“org.datanucleus.exceptions.ClassNotPersistableException:类“java.lang.String”是不可持久的。这意味着它没有被增强,或者文件的增强版本不在类路径中(或者被未增强的版本隐藏),或者找不到该类的元数据/注释。” 我该怎么做 谢谢 戈皮 这是错误堆栈 java.lang.IllegalArgumentEx

我正在尝试将一个json字符串(myobject.toJson()以json形式为我提供对象)持久化到orientdb。但是我用“org.datanucleus.exceptions.ClassNotPersistableException:类“java.lang.String”是不可持久的。这意味着它没有被增强,或者文件的增强版本不在类路径中(或者被未增强的版本隐藏),或者找不到该类的元数据/注释。”

我该怎么做

谢谢 戈皮

这是错误堆栈

java.lang.IllegalArgumentException:Type(“java.lang.String”)不是实体的类型,但需要用于此操作 位于org.datanucleus.api.jpa.JPAEntityManager.assertEntity(JPAEntityManager.java:1330) 位于org.datanucleus.api.jpa.JPAEntityManager.persist(JPAEntityManager.java:529) 在com.x.myclass.receive上(myclass.java:90) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 运行(Thread.java:722) 原因:org.datanucleus.exceptions.ClassNotPersistableException:类“java.lang.String”不可持久化。这意味着它或者没有被增强,或者文件的增强版本不在类路径中(或者被未增强的版本隐藏),或者找不到类的元数据/注释。 位于org.datanucleus.ObjectManagerImpl.assertClassPersistable(ObjectManagerImpl.java:5464) 位于org.datanucleus.api.jpa.JPAEntityManager.assertEntity(JPAEntityManager.java:1326) ... 9更多


Datanucleus插件受支持较差,为什么不直接使用OrientDB对象接口?

我们希望将Datanucleus用作抽象层以支持多个持久层。使用OrientDB的JPA接口是一种标准和通用的足够好的方式,不是吗?您可以切换到另一个JPA实现。也许我们可以。但datanucleus提供了RDBMS、非RDBMS(如Mongodb、orientdb、couchdb等文档库数据库)以及其他任何基于文件的系统之上的抽象。我怀疑JPA是否能普遍适用。是吗?如果您使用像OrientDB和Hibernate这样的2 JPA impl,您可以免费切换实现。但是OrientDB JPA实现不是100%兼容的,因此可能需要进行一些更改。那么为什么要将字符串传递给em.persist呢?