@GeneratedValue Neo4j OGM ClassCastException

@GeneratedValue Neo4j OGM ClassCastException,neo4j,sessionfactory,neo4j-ogm,Neo4j,Sessionfactory,Neo4j Ogm,当尝试使用Neo4j OGM会话(session.save(o))创建新对象时,出现以下错误: java.lang.ClassCastException: com.sun.proxy.$Proxy74 cannot be cast to org.neo4j.ogm.annotation.GeneratedValue at org.neo4j.ogm.metadata.ClassInfo.isPrimaryIndexField(ClassInfo.java:855)

当尝试使用Neo4j OGM会话(session.save(o))创建新对象时,出现以下错误:

    java.lang.ClassCastException: com.sun.proxy.$Proxy74 cannot be cast to org.neo4j.ogm.annotation.GeneratedValue
        at org.neo4j.ogm.metadata.ClassInfo.isPrimaryIndexField(ClassInfo.java:855)
        at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
        at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.collect(Unknown Source)
        at org.neo4j.ogm.metadata.ClassInfo.getFieldInfos(ClassInfo.java:349)
        at org.neo4j.ogm.metadata.ClassInfo.primaryIndexField(ClassInfo.java:824)
        at org.neo4j.ogm.metadata.DomainInfo.finish(DomainInfo.java:185)
        at org.neo4j.ogm.metadata.DomainInfo.create(DomainInfo.java:94)
        at org.neo4j.ogm.metadata.MetaData.<init>(MetaData.java:42)
        at org.neo4j.ogm.session.SessionFactory.<init>(SessionFactory.java:106)
        at com.wko.dpifyV1.server.Neo4jSessionFactoryV1.getNeo4jSession(Neo4jSessionFactoryV1.java:63)
        at com.wko.dpifyV1.server.GenericService.<init>(GenericService.java:11)
        at com.wko.dpifyV1.server.PersonServiceImpl.<init>(PersonServiceImpl.java:7)
        at com.wko.dpifyV1.server.Neo4jServiceImpl.sayHello(Neo4jServiceImpl.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
        at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.lang.Thread.run(Unknown Source)
这是我的课程:

public Session getNeo4jSession() {
driver = GraphDatabase.driver("bolt://localhost", AuthTokens.basic("***", "***"));
        org.neo4j.ogm.driver.Driver ogmDriver = new BoltDriver(driver);
        SessionFactory sessionFactory = new SessionFactory(ogmDriver, "com.client.model");
        Session session = sessionFactory.openSession();
return session;
}

所以是的。。。当工厂扫描(使用)时,我收到此错误。

在代码中找不到任何可能导致此问题的内容。我唯一能想到的是,您的GWT应用程序使用某种依赖注入,并且(正如错误消息所指出的)为您的域创建一个代理。(为了长期安全起见:在域类中提供一个空构造函数,用于在加载时构造对象。(第一段))感谢您的回复。今天晚些时候我将对此进行一次尝试,我的大多数对象都具有空构造函数,如指南中所示。现在我承认我在这个测试课上显然忘了。依赖注入不应该有问题,因为我在项目中得到了所有jar文件。我不知道为什么我会得到代理,但会有更深入的研究。我会再打给你的我找到了一种一切都很好的方法。。。在再次阅读手册的同时,我去看了一下抽象类DomainObject。在查看的同时,我查看了以下内容:我创建了一个包含实体、电影、评级和人员的测试包。正如您所看到的,抽象类是非常基本的。没有注释可能是问题所在?因为我注释了一个抽象类?现在我不使用注释,它默认使用Id。如果我能确认错误,为什么我会发布它。谢谢我还在
Id
字段上用
Id
GeneratedValue
注释的抽象类和用
NodeEntity
注释的实现中测试了纯OGM的用法。它工作没有任何问题。很可能是GWT创建了一个代理对象造成的。你把我推向了正确的方向。我现在读到代理对象似乎是个问题。乍一看,这篇文章似乎是解决办法。将提供最新信息。非常感谢您的帮助@meistermeier在您的代码中找不到任何可能导致此问题的内容。我唯一能想到的是,您的GWT应用程序使用某种依赖注入,并且(正如错误消息所指出的)为您的域创建一个代理。(为了长期安全起见:在域类中提供一个空构造函数,用于在加载时构造对象。(第一段))感谢您的回复。今天晚些时候我将对此进行一次尝试,我的大多数对象都具有空构造函数,如指南中所示。现在我承认我在这个测试课上显然忘了。依赖注入不应该有问题,因为我在项目中得到了所有jar文件。我不知道为什么我会得到代理,但会有更深入的研究。我会再打给你的我找到了一种一切都很好的方法。。。在再次阅读手册的同时,我去看了一下抽象类DomainObject。在查看的同时,我查看了以下内容:我创建了一个包含实体、电影、评级和人员的测试包。正如您所看到的,抽象类是非常基本的。没有注释可能是问题所在?因为我注释了一个抽象类?现在我不使用注释,它默认使用Id。如果我能确认错误,为什么我会发布它。谢谢我还在
Id
字段上用
Id
GeneratedValue
注释的抽象类和用
NodeEntity
注释的实现中测试了纯OGM的用法。它工作没有任何问题。很可能是GWT创建了一个代理对象造成的。你把我推向了正确的方向。我现在读到代理对象似乎是个问题。乍一看,这篇文章似乎是解决办法。将提供最新信息。非常感谢您的帮助@meistermeier
public Session getNeo4jSession() {
driver = GraphDatabase.driver("bolt://localhost", AuthTokens.basic("***", "***"));
        org.neo4j.ogm.driver.Driver ogmDriver = new BoltDriver(driver);
        SessionFactory sessionFactory = new SessionFactory(ogmDriver, "com.client.model");
        Session session = sessionFactory.openSession();
return session;
}