SDN4 - Neo4j OGM和JsonSubType注释

时间:2015-09-22 23:47:26

标签: java spring spring-data-neo4j-4 neo4j-ogm

我已遵循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的发布。

1 个答案:

答案 0 :(得分:1)

这应该在版本中修复:

1.1.3-SNAPSHOT

在1.1.3发布之前,您需要向快照存储库添加依赖项:

   <repository>
        <id>neo4j-snapshots</id>
        <url>http://m2.neo4j.org/content/repositories/snapshots</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>