您好我在使用Neo4jTemplate
保存NodeEntity对象时遇到以下错误无法在已执行架构更新的事务中执行数据更新
Spring-data: -
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>3.1.0.BUILD-SNAPSHOT</version>
Neo4j版本:2.X
服务: -
@Override
@Transactional
public void addRepository(Repository repository) {
template.save(repository);
}
引起:org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException:无法在已执行架构更新的事务中执行数据更新。 at org.neo4j.kernel.impl.api.KernelTransactionImplementation $ TransactionType $ 2.upgradeToDataTransaction(KernelTransactionImplementation.java:452) at 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个
答案 0 :(得分:1)
SDN 3.0.0现在需要在Spring配置中配置base-package
实际上,现在需要这样做,因为Neo4j 2.0.X不允许在与数据更新相同的事务中插入索引(第一次 save
操作所涉及的模式更改){{{ 1}}你的实体在你的情况下)。
因此,如果您对Spring使用XML配置,它将如下所示:
save
其中<neo4j:config graphDatabaseService="graphDatabaseService" base-package="com.myApp.myDomainPackage" />
包含所有节点实体。
而不是简单:
com.myApp.myDomainPackage
答案 1 :(得分:0)
数据更新和架构更改需要在单独的事务中进行。如果在同一交易中允许他们出现各种奇怪的现象。