OSGi和JPA的Java DB问题-SpringProxy不可见

OSGi和JPA的Java DB问题-SpringProxy不可见,java,spring,jpa,osgi,Java,Spring,Jpa,Osgi,我的应用程序使用Spring(STS)和OSGi。DB层使用JPA(带Eclipse链接),我有: 我的DAO的一个OSGi项目 一个用于我的DAO实现的OSGi项目 由于实体管理器没有像中那样提交我的更改,因此我在DAO对象中为我的创建、更新和删除方法添加了@Transactional注释(如果我理解得很好,则不考虑find等只读方法) 但这引发了一个例外: java.lang.IllegalArgumentException: interface org.springframework.

我的应用程序使用Spring(STS)和OSGi。DB层使用JPA(带Eclipse链接),我有:

  • 我的DAO的一个OSGi项目
  • 一个用于我的DAO实现的OSGi项目
由于实体管理器没有像中那样提交我的更改,因此我在DAO对象中为我的创建、更新和删除方法添加了
@Transactional
注释(如果我理解得很好,则不考虑find等只读方法)

但这引发了一个例外:

java.lang.IllegalArgumentException: interface org.springframework.aop.SpringProxy
is not visible from class loader
我首先在DAO和DAO impl级别添加注释,然后仅在DAO impl级别添加注释,但结果是相同的。我有时对春天有点迷茫,你能帮我一下吗


谢谢

这实际上是一个OSGi问题:OSGi由bundle组成,每个bundle都在自己的环境中执行,我的一个模块在另一个模块上缺乏可见性


要解决这个问题,我们必须使用。

DAO不应该是@Transactional的。把@Transactional放在使用DAOSY的服务层上你完全正确!谢谢您能告诉我您是如何解决这个问题的吗?我在尝试启动捆绑包时遇到了类似的错误。我使用@Transaction annotation,但我的理解是它由spring tx模块(org.springframework.Transaction)支持,而不是aop。如果您能提供一些指针,我将不胜感激。因为您使用了@Transactional annotation,这意味着您启用了依赖AOP的注释驱动事务。一些与交易相关的代码将自动注入。