Java 切入点实体加载/持久化JPA操作?
每次加载或持久化实体时,我都希望将其包装/展开。我知道我不能使用JPA监听器,因为它们只能对对象执行一个操作,而不能与另一个对象交换。自然的解决方案是使用方面。但是有没有特别的方法可以切入点呢?问题是要包装/展开的实体可以是另一个实体的字段 编辑:Java 切入点实体加载/持久化JPA操作?,java,jpa,aop,aspect,Java,Jpa,Aop,Aspect,每次加载或持久化实体时,我都希望将其包装/展开。我知道我不能使用JPA监听器,因为它们只能对对象执行一个操作,而不能与另一个对象交换。自然的解决方案是使用方面。但是有没有特别的方法可以切入点呢?问题是要包装/展开的实体可以是另一个实体的字段 编辑: 我发现您不能使用Spring AOP来执行此操作,因为EntityManager不是Spring管理的(为什么?)-请参阅。为了让它工作,我必须明确地定义EntityManagerbean,但在那篇文章中不推荐它,为什么?怎么做呢?另一方面,他们为什
我发现您不能使用Spring AOP来执行此操作,因为EntityManager不是Spring管理的(为什么?)-请参阅。为了让它工作,我必须明确地定义EntityManagerbean,但在那篇文章中不推荐它,为什么?怎么做呢?另一方面,他们为什么说创建的EntityManager是应用程序管理的?请参见尝试切入使用实体类的getter和setter。从EntityManager检索实体的方法,实现这一点的最佳方法是创建新注释,并覆盖所有可以检索该类实例的方法,然后使用@annotation support切入点: @注释-将匹配限制为连接点,其中 连接点(SpringAOP中执行的方法)具有给定的 注释 另外,要获得修改实体,您可以执行以下操作
有时,您需要在通知正文中访问返回的实际值。您可以使用@AfterReturning的形式绑定返回值,这是我最初的方法。它的问题是实体暴露在其嵌套的对象内部。更重要的是,我认为SpringAOP不能做到这一点,因为它只在托管bean上工作。。。