我正在混合spring-data和CXF来创建一个创建neo4j节点的RESTful端点。我的结构是一个定义面向公众的方法的集合接口,我的公共方法调用我的实现,其中有几个私有方法。
我的私有方法对它们有spring-tx @Transactional
,当我尝试从我的公共方法中调用它们时,我得到org.neo4j.graphdb.NotInTransactionException
。下面是一个GitHub项目,它设置为显示我的配置,你也可以运行它来查看错误:
https://github.com/NicholasAStuart/broken-spring-neo4j-cxf.git
任何人都可以帮助我吗?我已经按照spring-data-neo4j的文档中的步骤进行了操作,但是我似乎无法使用它,任何人都可以帮助我吗?
答案 0 :(得分:3)
@Transactional
注释不适用于私有方法。
使用代理时,应该应用@Transactional注释 仅限具有公众可见度的方法。如果你做注释保护, 使用@Transactional注释的私有或包可见方法, 没有引发错误,但带注释的方法没有出现错误 配置的事务设置。考虑使用AspectJ(参见 如果你需要注释非公开方法。
您可以使用aspectj
模式在任何类型的方法上启用此行为。
答案 1 :(得分:0)
chapter 11.5.6 of spring manual上的荧光笔:
方法可见性和@Transactional
使用代理时,应该应用@Transactional注释 仅限具有公众可见度的方法。如果你做注释保护, 使用@Transactional注释的私有或包可见方法, 没有引发错误,但带注释的方法没有出现错误 配置的事务设置。考虑使用AspectJ(参见 如果你需要注释非公开方法。