Я шел по пути SDN4 миграции из SDN3 и столкнулись с той же проблемой, описываемая здесь: SDN4 - Neo4j OGM - Jackson 2SDN4 - Neo4j OGM и JsonSubType Аннотация
Пластырь упоминается в ответ и упоминает, что он будет применяться к Neo4j-OGM 1.1.1. С тех пор я пробовал версии 1.1.1 и 1.1.2 без успеха. Вот пример моего аннотированного объекта SDN с аннотацией JsonSubType. Я использую аннотации Jackson 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.