ich eine Methode, ein in einer Klasse A, dieFrühling SDN 4.1 und @Async auf @Transactional Methode
@Service
public class A {
private B classB;
...
@Async
@Transactional
public void a() {
classB.b();
}
}
@Service
public class B {
...
@Transactional
public void b() {
// load some nodes from neo4j db by GraphRepository
}
}
dies ein Verfahren, b in einer Klasse B nennt, ist meine Neo4j Konfiguration
@Override
@Bean
@Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}
Entsprechend der Async Annotation setze ich den Scope-Wert auf prototype, aber es funktioniert nicht immer noch.
org.neo4j.ogm.exception.TransactionManagerException: Transaktion ist nicht aktuell für diesen Thread bei org.neo4j.ogm.session.transaction.DefaultTransactionManager.commit (DefaultTransactionManager.java:100) ~ [Neo4j-OGM -core-2.0.1.jar :?] bei org.neo4j.ogm.transaction.AbstractTransaction.commit (AbstractTransaction.java:83) ~ [neo4j-ogm-api-2.0.2.jar :?] bei org .neo4j.ogm.drivers.bolt.transaction.BoltTransaction.commit (BoltTransaction.java:80) ~ [neo4j-ogm-bolt-driver-2.0.2.jar :?] unter org.springframework.data.neo4j.transaction .Neo4jTransactionManager.commit (Neo4jTransactionManager.java:50) ~ [spring-data-neo4j-4.1.1.RELEASE.jar :?] unter org.springframework.tran saction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:485) ~ [spring-tx-4.2.5.RELEASE.jar: 4.2.5.RELEASE] unter org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction (TransactionAspectSupport. java: 291) [spring-tx-4.2.5.RELEASE.jar: 4.2.5.RELEASE] bei org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:96) ~ [spring-tx-4.2 .5.RELEASE.jar: 4.2.5.RELEASE] unter org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:179) ~ [spring-aop-4.2.5.RELEASE.jar: 4.2.5 .RELEASE] bei org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept (CglibAopProxy.java:655) ~ [feder-aop-4.2.5.RELEASE.jar: 4.2.5.RELEASE]
Ich habe die gleiche Technik mit einem anderen Projekt mit SDN 4.0.0 verwendet und es ist Arbeit.
Kann ein Fehler in SDN 4.1.1 und Ogm 2.0.3 sein?