我有以下设置。我正在使用spring数据通过hibernate访问数据
public class Controller {
private ServiceA serviceA
public A someMethod () {
A a = new A();
.
.
.
a=serviceA.add(a);
.
.
return a;
}
}
public class ServiceAImpl implements ServiceA {
public RepoA repoA
@Transcational
@AnnotationUsedInAroundAspect(name="xyz")
public A add(A a) {
A existingA = repoA.get(a.id);
repoA.delete(existingA);
return repoA.Save(a);
}
}
public class Aspect {
@Around("@annotation(a)")
public Object AroundAspect(ProceedingJoinPoint joinPoint, AnnotationUsedInAroundAspect a) {
Object value = joinPoint.proceed();
/**
Not all statements are flushed to db at this point
*/
.
.
.
return value;
}
}
在Aspect(注释部分周围),删除被刷新到DB但保存(保存新的A对象)还没有。但是如果删除了delete语句,那么在此时将save刷新到db。只刷新给定表上的第一个语句,其余的不在此时。但是一旦控件返回控制器,所有语句都会被刷新。有人可以帮我理解发生了什么或者hibernate是否存在问题?