Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j时间树REST API上一次和下一次导航_Neo4j_Graph Databases_Spring Data Neo4j 4_Graphaware - Fatal编程技术网

Neo4j时间树REST API上一次和下一次导航

Neo4j时间树REST API上一次和下一次导航,neo4j,graph-databases,spring-data-neo4j-4,graphaware,Neo4j,Graph Databases,Spring Data Neo4j 4,Graphaware,我目前正在使用Neo4j TimeTree REST API,是否有任何方法可以导航到给定时间戳前后的时间?我的决心是秒,我只是意识到,如果一分钟发生了变化,那么就没有“下一秒”关系将前一分钟的前一秒连接到当前的第二秒。这使得cypher查询变得相当复杂,如果它已经可用,我不想再重新发明轮子。 提前感谢,我们将非常感谢您的回复 编辑 我必须再次重现缺失的下一个关系问题,如下图所示。这从我第三次添加新的第二时间瞬间开始发生 我实际上创建了一个NodeEntity来处理第二个节点。这门课如下所示

我目前正在使用Neo4j TimeTree REST API,是否有任何方法可以导航到给定时间戳前后的时间?我的决心是秒,我只是意识到,如果一分钟发生了变化,那么就没有“下一秒”关系将前一分钟的前一秒连接到当前的第二秒。这使得cypher查询变得相当复杂,如果它已经可用,我不想再重新发明轮子。 提前感谢,我们将非常感谢您的回复

编辑

我必须再次重现缺失的下一个关系问题,如下图所示。这从我第三次添加新的第二时间瞬间开始发生

我实际上创建了一个NodeEntity来处理第二个节点。这门课如下所示

@NodeEntity(label = "Second")
public class TimeTreeSecond {
    @GraphId
    private Long id;

    private Integer value;

    @Relationship(type = "CREATED_ON", direction = Relationship.INCOMING)
    private FilterVersionChange relatedFilterVersionChange;

    @Relationship(type = "NEXT", direction = Relationship.OUTGOING)
    private TimeTreeSecond nextTimeTreeSecond;

    @Relationship(type = "NEXT", direction = Relationship.INCOMING)
    private TimeTreeSecond prevTimeTreeSecond;

    public TimeTreeSecond() {
    }

    public Long getId() {
        return id;
    }

    public void next(TimeTreeSecond nextTimeTreeSecond) {
        this.nextTimeTreeSecond = nextTimeTreeSecond;
    }

    public FilterVersionChange getRelatedFilterVersionChange() {
        return relatedFilterVersionChange;
    }
}
这里的问题是即将到来的下一个关系。当我忽略这一点时,一切正常。 有时,当我以短延迟重复创建时间瞬间时,我的控制台中甚至会出现这种异常

Exception in thread "main" org.neo4j.ogm.session.result.ResultProcessingException: Could not initialise response
    at org.neo4j.ogm.session.response.GraphModelResponse.<init>(GraphModelResponse.java:38)
    at org.neo4j.ogm.session.request.SessionRequestHandler.execute(SessionRequestHandler.java:55)
    at org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:108)
    at org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:100)
    at org.springframework.data.neo4j.repository.GraphRepositoryImpl.findOne(GraphRepositoryImpl.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:452)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:437)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:409)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy32.findOne(Unknown Source)
    at de.rwthaachen.service.core.FilterDefinitionServiceImpl.createNewFilterVersionChange(FilterDefinitionServiceImpl.java:100)
    at sampleapp.FilterLauncher.main(FilterLauncher.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: org.neo4j.ogm.session.result.ResultProcessingException: "errors":[{"code":"Neo.ClientError.Statement.InvalidType","message":"Expected a numeric value for empty iterator, but got null"}]}
    at org.neo4j.ogm.session.response.JsonResponse.parseErrors(JsonResponse.java:128)
    at org.neo4j.ogm.session.response.JsonResponse.parseColumns(JsonResponse.java:102)
    at org.neo4j.ogm.session.response.JsonResponse.initialiseScan(JsonResponse.java:46)
    at org.neo4j.ogm.session.response.GraphModelResponse.initialiseScan(GraphModelResponse.java:66)
    at org.neo4j.ogm.session.response.GraphModelResponse.<init>(GraphModelResponse.java:36)
    ... 27 more
2015-05-23 01:30:46,204  INFO ork.data.neo4j.config.Neo4jConfiguration:  62 - Intercepted exception
线程“main”org.neo4j.ogm.session.result.ResultProcessingException中的异常:无法初始化响应 在org.neo4j.ogm.session.response.GraphModelResponse上(GraphModelResponse.java:38) 位于org.neo4j.ogm.session.request.SessionRequestHandler.execute(SessionRequestHandler.java:55) 位于org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:108) 位于org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:100) 位于org.springframework.data.neo4j.repository.graphrespositoryimpl.findOne(graphrespositoryimpl.java:50) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 位于org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:452) 位于org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:437) 位于org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:409) 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)上 位于org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 位于org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:281) 位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)上 位于org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)上 位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 位于com.sun.proxy.$Proxy32.findOne(未知源) 位于de.rwthaachen.service.core.FilterDefinitionServiceImpl.CreateNewFilterServersOnChange(FilterDefinitionServiceImpl.java:100) 位于sampleapp.FilterLauncher.main(FilterLauncher.java:50) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 原因:org.neo4j.ogm.session.result.ResultProcessingException:“错误”[{“代码”:“Neo.ClientError.Statement.InvalidType”,“消息”:“需要空迭代器的数值,但得到null”}]} 位于org.neo4j.ogm.session.response.JsonResponse.parseErrors(JsonResponse.java:128) 位于org.neo4j.ogm.session.response.JsonResponse.parseColumns(JsonResponse.java:102) 位于org.neo4j.ogm.session.response.JsonResponse.initialiseScan(JsonResponse.java:46) 在org.neo4j.ogm.session.response.GraphModelResponse.initialiseScan上(GraphModelResponse.java:66) 在org.neo4j.ogm.session.response.GraphModelResponse上(GraphModelResponse.java:36) ... 还有27个 2015-05-23 01:30:46204信息ork.data.neo4j.config.NEO4JC配置:62-截获异常 下面是我用来创建时间瞬间节点的一个REST调用示例:

我用于创建数据的方法:

public FilterVersionChange createNewFilterVersionChange(String projectName,
                                                            String filterVersionName,
                                                            String filterVersionChangeDescription,
                                                            Set<FilterState> filterStates)
    {
        Long filterVersionNodeId = filterVersionRepository.findFilterVersionByName(projectName, filterVersionName);
        FilterVersion newFilterVersion = filterVersionRepository.findOne(filterVersionNodeId, 2);

        // Populate all the existing filters in the current project
        Map<String, Filter> existingFilters = new HashMap<String, Filter>();
        try
        {
            for(Filter filter : newFilterVersion.getProject().getFilters())
            {
                existingFilters.put(filter.getMatchingString(), filter);
            }
        }
        catch(Exception e) {}

        // Map the filter states to the populated filters, if any. Otherwise, create new filter for it.
        for(FilterState filterState : filterStates)
        {
            Filter filter = existingFilters.get(filterState.getMatchingString());
            if(filter == null)
            {
                filter = new Filter(filterState.getMatchingString(), filterState.getMatchingType(), newFilterVersion.getProject());
            }
            filterState.stateOf(filter);
        }

        Long now = System.currentTimeMillis();
        TimeTreeSecond timeInstantNode = timeTreeSecondRepository.findOne(timeTreeService.getFilterTimeInstantNodeId(projectName, now));
        FilterVersionChange filterVersionChange = new FilterVersionChange(filterVersionChangeDescription, now, filterStates, filterStates, newFilterVersion, timeInstantNode);
        FilterVersionChange addedFilterVersionChange = filterVersionChangeRepository.save(filterVersionChange);

        return addedFilterVersionChange;
    }
public FilterVersionChange createNewFilterVersionChange(字符串projectName,
字符串filterVersionName,
字符串filterVersionChangeDescription,
设置过滤器(状态)
{
Long filterVersionNodeId=filterVersionRepository.findFilterVersionByName(项目名称,filterVersionName);
FilterVersion newFilterVersion=filterVersionRepository.findOne(filterVersionNodeId,2);
//填充当前项目中的所有现有过滤器
Map existingFilters=new HashMap();
尝试
{
对于(筛选器筛选器:newFilterVersion.getProject().getFilters())
{
existingFilters.put(filter.getMatchingString(),filter);
}
}
捕获(例外e){}
//将筛选器状态映射到已填充的筛选器(如果有)。否则,为其创建新筛选器。
用于(过滤器状态过滤器状态:过滤器状态)
{
过滤器过滤器=现有过滤器
(post:Post)-[:NEXT]->(post:Post)
class Post {
   @Relationship(type="NEXT", direction=Relationship.OUTGOING)
   Post next;

   @Relationship(type="NEXT", direction=Relationship.INCOMING)
   Post previous;
}
class Post {
   Post next;

   @Transient Post previous;

   @Relationship(type="NEXT", direction=Relationship.OUTGOING)
   public void setNext(Post next) {
      this.next = next;
      if (next != null) {
          next.previous = this;
      }
   }
}
findOne(post.getId(), -1);