neo4j:无法在已执行模式更新的事务中执行数据更新 [英] neo4j : Cannot perform data updates in a transaction that has performed schema updates

查看:474
本文介绍了neo4j:无法在已执行模式更新的事务中执行数据更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用Neo4jTemplate保存NodeEntity对象时遇到以下错误

Hi I am getting following error while saving NodeEntity object by using Neo4jTemplate

无法在已执行架构更新的事务中执行数据更新

Cannot perform data updates in a transaction that has performed schema updates

Spring数据:-

Spring-data :-

        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>3.1.0.BUILD-SNAPSHOT</version>

Neo4j版本:2.X

Neo4j Version : 2.X

服务:-

@Override
@Transactional
public void addRepository(Repository repository) {
    template.save(repository);
}

由以下原因引起:org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException:无法在已执行模式更新的事务中执行数据更新. 在org.neo4j.kernel.impl.api.KernelTransactionImplementation $ TransactionType $ 2.upgradeToDataTransaction(KernelTransactionImplementation.java:452) 在org.neo4j.kernel.impl.api.KernelTransactionImplementation.upgradeToDataTransaction(KernelTransactionImplementation.java:212) 在org.neo4j.kernel.impl.api.KernelStatement.dataWriteOperations(KernelStatement.java:84) 在org.neo4j.kernel.InternalAbstractGraphDatabase.createNode(InternalAbstractGraphDatabase.java:1033) ...还有49个

Caused by: org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException: Cannot perform data updates in a transaction that has performed schema updates. at org.neo4j.kernel.impl.api.KernelTransactionImplementation$TransactionType$2.upgradeToDataTransaction(KernelTransactionImplementation.java:452) at org.neo4j.kernel.impl.api.KernelTransactionImplementation.upgradeToDataTransaction(KernelTransactionImplementation.java:212) at org.neo4j.kernel.impl.api.KernelStatement.dataWriteOperations(KernelStatement.java:84) at org.neo4j.kernel.InternalAbstractGraphDatabase.createNode(InternalAbstractGraphDatabase.java:1033) ... 49 more

推荐答案

SDN 3.0.0现在需要在您的Spring配置中配置base-package.
实际上,由于Neo4j 2.0.X不允许在与数据更新(savesave)相同的事务中插入索引(您的 first save操作涉及的模式更改),因此现在需要这样做.您的实体).

SDN 3.0.0 needs now to have base-package configured in your Spring configuration.
Indeed, this is now needed since Neo4j 2.0.X doesn't allow insertion of index (schema change involved by your first save operation) in the same transaction as a data update (save of your entity in your case).

因此,如果您对Spring使用XML配置,它将看起来像:

So if you use XML configuration for Spring, it would looks like:

<neo4j:config graphDatabaseService="graphDatabaseService" base-package="com.myApp.myDomainPackage" />

其中,com.myApp.myDomainPackage包含所有节点实体. 而不是简单:

where com.myApp.myDomainPackage contains all the node entities. instead of simple:

<neo4j:config graphDatabaseService="graphDatabaseService"/>

这篇关于neo4j:无法在已执行模式更新的事务中执行数据更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆