私は SDN3 から SDN4 移行パスをたどりましたが、ここに記載されている同じ問題に遭遇しました: SDN4 - Neo4j OGM - Jackson 2
回答ではパッチが参照されており、neo4j-ogm 1.1.1 に適用されることが言及されています。それ以来、バージョン 1.1.1 と 1.1.2 を試しましたが、成功しませんでした。JsonSubType アノテーションを使用した SDN アノテーション付きエンティティのサンプルを次に示します。jackson-annotations 2.6.2 を使用しています。
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes({
@JsonSubTypes.Type(value = au.com.guml.domain.uml.Package.class, name = "Package"),
@JsonSubTypes.Type(value = au.com.guml.domain.uml.Class.class, name = "Class"),
@JsonSubTypes.Type(value = au.com.guml.domain.uml.diagram.Diagram.class, name = "Diagram")
})
@NodeEntity
public interface PackageableElement extends NamedElement {
public Integer getSequence();
public void setSequence(Integer sequence);
}
JsonSubTypes アノテーションをコメントアウトすると、単体テストが機能します。ただし、リンクされたstackoverflowの質問のように例外が発生します。
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.neo4j.ogm.session.SessionFactory]: Factory method 'getSessionFactory' threw exception; nested exception is java.lang.ClassFormatError: Invalid annotation element type tag: 0x0
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:591)
... 45 more
Caused by: java.lang.ClassFormatError: Invalid annotation element type tag: 0x0
アイデア、回避策はありますか?このパッチは、neo4j-ogm のリリースには適用されていないようです。