【问题标题】:Scala Neo4j OGM - Will not scan annotated NodeEntity classes - IllegalArgumentExceptionScala Neo4j OGM - 不会扫描带注释的 NodeEntity 类 - IllegalArgumentException
【发布时间】:2018-03-08 19:03:49
【问题描述】:

问题:带注释的类未加载到类映射中。

我对如何使用 OGM 的理解:

  • 将您的域(包括您的NodeEntity 注释类)传递给SessionFactory
  • 打开Session。此时,在幕后构建了带注释的NodeEntity 类的类图。这在第 3 行的堆栈跟踪中被称为“构建注释类映射”。您会在下一行看到 it mapped 0
  • 将带注释的 NodeEntity 类的实例传递给 session.save
  • 您的实体现已保存在 Neo4j 中!

this sample project中,域是testdomain,唯一带注释的NodeEntityPerson,是在同一个文件中定义的。我希望这将消除在幕后寻找要构建到持久类映射中的类的任何问题。但是从日志中可以看出,类映射没有考虑我传递给SessionFactory 的域。

这可以防止任何数据被保存到 Neo。

您可以克隆项目并自己运行应用程序以重现问题(自述文件中的说明)。

堆栈跟踪:

[info] Running testdomain.Test
2018-03-08 13:54:09 INFO  DomainInfo:160 - Starting Post-processing phase
2018-03-08 13:54:09 INFO  DomainInfo:126 - Building annotation class map
2018-03-08 13:54:09 INFO  DomainInfo:139 - Building interface class map for 0 classes
2018-03-08 13:54:09 INFO  DomainInfo:215 - Post-processing complete
[error] (run-main-0) java.lang.IllegalArgumentException: Class class testdomain.Person is not a valid entity class. Please check the entity mapping.
[error] java.lang.IllegalArgumentException: Class class testdomain.Person is not a valid entity class. Please check the entity mapping.
[error]         at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:88)
[error]         at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:40)
[error]         at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:469)
[error]         at testdomain.Test$.delayedEndpoint$testdomain$Test$1(Test.scala:32)
[error]         at testdomain.Test$delayedInit$body.apply(Test.scala:26)
[error]         at scala.Function0.apply$mcV$sp(Function0.scala:34)
[error]         at scala.Function0.apply$mcV$sp$(Function0.scala:34)
[error]         at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
[error]         at scala.App.$anonfun$main$1$adapted(App.scala:76)
[error]         at scala.collection.immutable.List.foreach(List.scala:389)
[error]         at scala.App.main(App.scala:76)
[error]         at scala.App.main$(App.scala:74)
[error]         at testdomain.Test$.main(Test.scala:26)
[error]         at testdomain.Test.main(Test.scala)
[error]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[error]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[error]         at java.lang.reflect.Method.invoke(Unknown Source)
[error]         at sbt.Run.invokeMain(Run.scala:93)
[error]         at sbt.Run.run0(Run.scala:87)
[error]         at sbt.Run.execute$1(Run.scala:65)
[error]         at sbt.Run.$anonfun$run$4(Run.scala:77)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error]         at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:10)
[error]         at sbt.TrapExit$App.run(TrapExit.scala:252)
[error]         at java.lang.Thread.run(Unknown Source)
[error] java.lang.RuntimeException: Nonzero exit code: 1
[error]         at sbt.Run$.executeTrapExit(Run.scala:124)
[error]         at sbt.Run.run(Run.scala:77)
[error]         at sbt.Defaults$.$anonfun$bgRunTask$5(Defaults.scala:1169)
[error]         at sbt.Defaults$.$anonfun$bgRunTask$5$adapted(Defaults.scala:1164)
[error]         at sbt.internal.BackgroundThreadPool.$anonfun$run$1(DefaultBackgroundJobService.scala:366)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error]         at scala.util.Try$.apply(Try.scala:209)
[error]         at sbt.internal.BackgroundThreadPool$BackgroundRunnable.run(DefaultBackgroundJobService.scala:289)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[error]         at java.lang.Thread.run(Unknown Source)
[error] (Compile / run) Nonzero exit code: 1
[error] Total time: 6 s, completed Mar 8, 2018 1:54:09 PM

为了解决这个问题,我已经到处搜索了。但是,我是 scala 的新手,所以这一定是我缺少的一些简单的东西,对吧?

-skyfer

【问题讨论】:

  • 看来问题出在App trait 的使用上,可能是由Scala 的类加载行为引起的。
  • Neo4j OGM Issues page 所述,我已经attempted 放弃使用App,但未能获得不同的结果。
  • 在旧版本的 Neo4j OGM 中,this 项目中,已成功加载带注释的 NodeEntity 类:```

标签: scala neo4j neo4j-ogm


【解决方案1】:

已通过修改 Neo4j OGM 库解决了此问题。详细信息在他们的 github 上的this issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多