2

SDN 3.2.0.RELEASE および Spring 4.1.1.RELEASE で Neo4J 2.1.5 を使用しています

1 つのリポジトリには派生クエリが含まれています。

Landscape getLandscapeByuuid(String landscapeUUID);

断続的に (そして、このメソッドへのいくつかの呼び出しは適切なオブジェクトを返し、いくつかは以下のエラーを生成しますが、呼び出しの間にデータベースに変更はありません)、私は開始する非常に長いエラー スタック トレースを取得します。

Caused by: java.lang.StackOverflowError: null
at org.neo4j.kernel.impl.core.NodeImpl.getAllRelationshipsOfType(NodeImpl.java:181) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.core.NodeImpl.getRelationships(NodeImpl.java:241) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.api.store.PersistenceCache.nodeGetRelationships(PersistenceCache.java:200) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.api.store.CacheLayer.nodeListRelationships(CacheLayer.java:451) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.api.StateHandlingStatementOperations.nodeGetRelationships(StateHandlingStatementOperations.java:903) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.api.ConstraintEnforcingEntityOperations.nodeGetRelationships(ConstraintEnforcingEntityOperations.java:358) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.api.OperationsFacade.nodeGetRelationships(OperationsFacade.java:174) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:170) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:161) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:76) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.springframework.data.neo4j.fieldaccess.RelationshipHelper.getRelationships(RelationshipHelper.java:182) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.RelatedToViaCollectionFieldAccessorFactory$RelatedToViaCollectionFieldAccessor.loadRelationshipEntities(RelatedToViaCollectionFieldAccessorFactory.java:133) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.RelatedToViaCollectionFieldAccessorFactory$RelatedToViaCollectionFieldAccessor.getValue(RelatedToViaCollectionFieldAccessorFactory.java:120) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.DefaultEntityState.getValue(DefaultEntityState.java:97) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyEntityStatePropertyValue(SourceStateTransmitter.java:90) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.access$000(SourceStateTransmitter.java:40) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter$2.doWithAssociation(SourceStateTransmitter.java:61) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:324) ~[spring-data-commons-1.9.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyPropertiesFrom(SourceStateTransmitter.java:57) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityFetchHandler.fetchValue(Neo4jEntityFetchHandler.java:75) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityFetchHandler.fetch(Neo4jEntityFetchHandler.java:68) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl$1.doWithAssociation(Neo4jEntityConverterImpl.java:135) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:324) ~[spring-data-commons-1.9.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.cascadeFetch(Neo4jEntityConverterImpl.java:125) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.loadEntity(Neo4jEntityConverterImpl.java:114) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.read(Neo4jEntityConverterImpl.java:104) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister$CachedConverter.read(Neo4jEntityPersister.java:170) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.createEntityFromState(Neo4jEntityPersister.java:192) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.Neo4jTemplate.createEntityFromState(Neo4jTemplate.java:224) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.GraphBackedEntityIterableWrapper.underlyingObjectToObject(GraphBackedEntityIterableWrapper.java:41) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.GraphBackedEntityIterableWrapper.underlyingObjectToObject(GraphBackedEntityIterableWrapper.java:27) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.neo4j.helpers.collection.IterableWrapper$MyIteratorWrapper.underlyingObjectToObject(IterableWrapper.java:57) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorWrapper.next(IteratorWrapper.java:47) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:382) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:461) ~[neo4j-kernel-2.1.5.jar:2.1.5]
at org.springframework.data.neo4j.fieldaccess.RelatedToViaCollectionFieldAccessorFactory$RelatedToViaCollectionFieldAccessor.getValue(RelatedToViaCollectionFieldAccessorFactory.java:122) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.fieldaccess.DefaultEntityState.getValue(DefaultEntityState.java:97) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.copyEntityStatePropertyValue(SourceStateTransmitter.java:90) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter.access$000(SourceStateTransmitter.java:40) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.neo4j.support.mapping.SourceStateTransmitter$2.doWithAssociation(SourceStateTransmitter.java:61) ~[spring-data-neo4j-3.2.0.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithAssociations(BasicPersistentEntity.java:324) ~[spring-data-commons-1.9.0.RELEASE.jar:na]

(完全なダンプはhttp://pastebin.com/k9iMc0cUにあります)

関連するドメイン オブジェクトはランドスケープです。これは非常に単純です。そのスーパークラスと継承されたインターフェースも含めました。私が持っている重要な質問は...なぜ上記のエラーが断続的なのかということです-私が通常見ているのは、そのメソッドへの最初の2つの呼び出しがエラーを生成し、3番目以降の呼び出しが成功することです... neo4jのいくつかのキャッシングの問題、 多分?

public class Landscape extends GenericPublication {

    private String comments;

    public String getComments() {
        return comments;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }


}

public interface IPublication {

    public Set<Syndication> getSyndications();

    public String getUuid();

    public void setComments(String comments);

    public void setName(String name);

    public void setSyndications(Set<Syndication> syndications);

    public void setUuid(String uuid);

}

@NodeEntity
@XmlAccessorType(XmlAccessType.NONE)
public class GenericPublication implements IPublication {

    @Fetch
    @XmlElement
    @RelatedTo(type = "SYNDICATES_TO", direction = Direction.INCOMING)
    Set<ArticleCollection> articleCollections = new HashSet<ArticleCollection>();

    @Fetch
    @XmlElement
    String comments;

    @Fetch
    @XmlElement
    String name;

    @GraphId
    @Fetch
    Long nodeId;

    @Fetch
    @RelatedToVia(type = "SYNDICATES_TO", direction = Direction.INCOMING)
    Set<Syndication> syndications;

    @Fetch
    @XmlElement
    @Indexed
    String uuid;

    public String getComments() {
        return comments;
    }

    public String getName() {
        return name;
    }

    public Set<Syndication> getSyndications() {
        return syndications;
    }

    public String getUuid() {
        return uuid;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSyndications(Set<Syndication> syndications) {
        this.syndications = syndications;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

}

@RelationshipEntity(type = "SYNDICATES_TO")
public class Syndication {

    @GraphId
    Long nodeId;

    @Fetch
    @StartNode
    @Indexed
    ArticleCollection articleCollection;

    @Fetch
    @EndNode
    @Indexed
    GenericPublication publication;

    @Fetch
    @Indexed
    String uuid;

    @Fetch
    Set<String> categories;

    public Set<String> getCategories() {
        return categories;
    }

    public void setCategories(Set<String> categories) {
        this.categories = categories;
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public Long getNodeId() {
        return nodeId;
    }

    public void setNodeId(Long nodeId) {
        this.nodeId = nodeId;
    }

    public ArticleCollection getArticleCollection() {
        return articleCollection;
    }

    public void setArticleCollection(ArticleCollection articleCollection) {
        this.articleCollection = articleCollection;
    }

    public GenericPublication getPublication() {
        return publication;
    }

    public void setPublication(GenericPublication publication) {
        this.publication = publication;
    }

}

ここで何が問題なのですか?これは非常に簡単なユースケースなので、どこを見ればいいのかわかりません...

4

0 に答える 0