Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework Neo4j OGM不';迁移到版本3后,无法在Play Framework HTTP GET中工作_Playframework_Neo4j Ogm - Fatal编程技术网

Playframework Neo4j OGM不';迁移到版本3后,无法在Play Framework HTTP GET中工作

Playframework Neo4j OGM不';迁移到版本3后,无法在Play Framework HTTP GET中工作,playframework,neo4j-ogm,Playframework,Neo4j Ogm,今天,我将neo4j ogm迁移到了最新版本(3.0.1)。我遵循了所有的建议,但现在当我尝试查询一个实体时,我得到了一个MappingException,因为系统似乎无法找到实体类。在进一步的调查和阅读之后,我尝试在HTTP POST响应中进行查询,它工作得很好,因此使用neo4j ogm会话在GET HTTP响应中进行查询似乎是一个问题,正如在另一个问题回答中所建议的那样。对这里可能发生的事情有什么想法吗 例外情况如下所示: play.api.http.HttpErrorHandlerExc

今天,我将neo4j ogm迁移到了最新版本(3.0.1)。我遵循了所有的建议,但现在当我尝试查询一个实体时,我得到了一个MappingException,因为系统似乎无法找到实体类。在进一步的调查和阅读之后,我尝试在HTTP POST响应中进行查询,它工作得很好,因此使用neo4j ogm会话在GET HTTP响应中进行查询似乎是一个问题,正如在另一个问题回答中所建议的那样。对这里可能发生的事情有什么想法吗

例外情况如下所示:

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[MappingException: Error mapping GraphModel to instance of nodes.UserNode]]
        at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:255)
        at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:180)
        at play.core.server.AkkaHttpServer$$anonfun$13$$anonfun$apply$1.applyOrElse(AkkaHttpServer.scala:251)
        at play.core.server.AkkaHttpServer$$anonfun$13$$anonfun$apply$1.applyOrElse(AkkaHttpServer.scala:250)
        at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:346)
        at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:345)
        at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
        at play.api.libs.streams.Execution$trampoline$.execute(Execution.scala:70)
        at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)
        at scala.concurrent.impl.Promise$DefaultPromise.scala$concurrent$impl$Promise$DefaultPromise$$dispatchOrAddCallback(Promise.scala:280)
Caused by: org.neo4j.ogm.exception.core.MappingException: Error mapping GraphModel to instance of nodes.UserNode
        at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:206)
        at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:135)
        at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:89)
        at org.neo4j.ogm.session.delegates.LoadOneDelegate.load(LoadOneDelegate.java:70)
        at org.neo4j.ogm.session.delegates.LoadOneDelegate.load(LoadOneDelegate.java:46)
        at org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:155)
        at controllers.UsersController.getUserMetrics(UsersController.java:372)
        at controllers.UsersController.index(UsersController.java:66)
        at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(Routes.scala:891)
        at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(Routes.scala:891)
Caused by: org.neo4j.ogm.exception.core.MappingException: Unable to load class with FQN: nodes.UserNode
        at org.neo4j.ogm.metadata.reflect.EntityFactory.instantiateObjectFromTaxa(EntityFactory.java:109)
        at org.neo4j.ogm.metadata.reflect.EntityFactory.newObject(EntityFactory.java:58)
        at org.neo4j.ogm.context.GraphEntityMapper.mapNodes(GraphEntityMapper.java:217)
        at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:203)
        at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:135)
        at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:89)
        at org.neo4j.ogm.session.delegates.LoadOneDelegate.load(LoadOneDelegate.java:70)
        at org.neo4j.ogm.session.delegates.LoadOneDelegate.load(LoadOneDelegate.java:46)
        at org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:155)
        at controllers.UsersController.getUserMetrics(UsersController.java:372)
Caused by: java.lang.ClassNotFoundException: nodes.UserNode
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.neo4j.ogm.metadata.reflect.EntityFactory.instantiateObjectFromTaxa(EntityFactory.java:106)
        at org.neo4j.ogm.metadata.reflect.EntityFactory.newObject(EntityFactory.java:58)
        at org.neo4j.ogm.context.GraphEntityMapper.mapNodes(GraphEntityMapper.java:217)
        at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:203)
        at org.neo4j.ogm.context.GraphEntityMapper.map(GraphEntityMapper.java:135)
neo4j调试日志如下所示:

[info] o.n.o.d.b.r.BoltRequest - Request: MATCH (n:`UserNode`) WHERE ID(n) = { id } WITH n RETURN n,[ [ (n)<-[r_p1:`PEER`]-(u1:`UserNode`) | [ r_p1, u1 ] ] ] with params {id=1}
[debug] o.n.o.d.b.d.BoltDriver - No current transaction, starting a new one
[debug] o.n.o.d.b.d.BoltDriver - Native transaction: org.neo4j.driver.internal.ExplicitTransaction@6acdd993
[debug] o.n.o.d.b.t.BoltTransaction - Committing native transaction: org.neo4j.driver.internal.ExplicitTransaction@6acdd993
[debug] o.n.o.t.Transaction - Thread 62: Commit transaction extent: 0
[debug] o.n.o.t.Transaction - Thread 62: Committed
[debug] o.n.o.t.Transaction - Thread 62: Close transaction extent: 0
[debug] o.n.o.t.Transaction - Thread 62: Closing transaction
[debug] o.n.o.m.MetaData - looking for concrete class to resolve label: UserNode
[debug] o.n.o.m.MetaData - concrete class found: org.neo4j.ogm.metadata.ClassInfo@7abf416c. comparing with what's already been found previously...
[debug] o.n.o.m.MetaData - UserNode resolving class: org.neo4j.ogm.metadata.ClassInfo@7abf416c
[error] application -

[info]o.n.o.d.b.r.BoltRequest-请求:匹配(n:`UserNode`),其中ID(n)={ID}和n返回n,[[(n)核心问题似乎是
ClassNotFoundException
。看起来neo4j ogm正在尝试加载
节点。UserNode
类,但找不到它

neo4j ogm可能没有使用正确的
类加载器
。这是一个常见的问题,因为在“开发模式”中使用了几个
类加载器
,而默认的类加载器通常不正确

要解决此问题,首先通过注入
Play.Environment
(Play的Java API)或
Play.API.Environment
(Play的Scala API)来获取Play的正确
ClassLoader
。然后调用
环境上的
ClassLoader
属性来获取Play的
ClassLoader


接下来,通过显式地将
类加载器
传递给neo4j ogm(如果API支持),或者使用
Thread.setContextClassLoader()
设置当前线程的默认
类加载器
(确保完成后还原旧的
类加载器

neo4j ogm可能没有使用正确的
类加载器
。这是一个常见的问题,因为在“开发模式”中使用了几个
类加载器
,而默认的类加载器通常不正确

要解决此问题,首先通过注入
Play.Environment
(Play的Java API)或
Play.API.Environment
(Play的Scala API)来获取Play的正确
ClassLoader
。然后调用
环境上的
ClassLoader
属性来获取Play的
ClassLoader


接下来,通过显式地将
类加载器
传递给neo4j ogm(如果API支持),或者使用
Thread.setContextClassLoader()
设置当前线程的默认
类加载器
(确保完成后还原旧的
类加载器
).

建议的类加载器问题实际上就是问题所在。但是,neo4j ogm有一种方法可以自行解决。正如建议的那样,neo4j ogm在加载类型时也可以不依赖类加载器。代码已经修复,在ogm的下一个版本上这应该是可以的(出现问题的当前版本是3.0.1).

建议的类加载器问题实际上就是问题所在。但是,neo4j ogm有一种方法可以自行解决。正如建议的那样,neo4j ogm在加载类型时也可以不依赖类加载器。代码已经修复,在ogm的下一个版本上这应该是可以的(出现问题的当前版本是3.0.1).

neo4j ogm团队正在对其进行调查。neo4j ogm团队正在对其进行调查