您好,我在使用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:无法在已执行架构更新的事务中执行数据更新。在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个
发布于 2014-03-02 20:34:26
SDN3.0.0现在需要在您的Spring配置中配置base-package。
实际上,现在需要这样做,因为Neo4j 2.0.X不允许在与数据更新相同的事务中插入索引( first save操作涉及的模式更改)(在本例中是实体的save)。
因此,如果您使用Spring的XML配置,它将如下所示:
<neo4j:config graphDatabaseService="graphDatabaseService" base-package="com.myApp.myDomainPackage" />其中com.myApp.myDomainPackage包含所有节点实体。而不是简单的:
<neo4j:config graphDatabaseService="graphDatabaseService"/>发布于 2014-02-28 17:18:05
数据更新和架构更改需要在不同的事务中进行。如果允许它们出现在同一交易中,各种奇怪的事情就有可能发生。
https://stackoverflow.com/questions/22089640
复制相似问题