我有像这样的类层次结构
public class AccessHistoryJpaDAO extends PaginatedJpaDAO<AccessHistory, Long>
implements AccessHistoryDAO
在AccessHistoryJpaDAO中我实现了在AccessHistoryDAO接口中声明的logIn方法。
public void logIn(AccessHistory entity) throws DAOException
{
super.save(entity);
}
然后我扩展了Spring的AuthenticationProcessingFilter
公共类CustomAuthenticatingFilter扩展了AuthenticationProcessingFilter
和重写方法
@Override
public Authentication attemptAuthentication(HttpServletRequest request)
throws AuthenticationException
当我打电话给时,这个方法是
getAccessHistoryDAO().logIn(entity);
hibernate无法持久化实体但是 当我打电话给direclty时
getAccessHistoryDAO().save(entity)
上面的方法它是持久的实体,我试图找出它但没有任何线索,任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
它看起来像是一个众所周知的Proxy-AOP问题。
我猜您在@Transactional
方法中有一个save
注释。但是,如果从OTHER弹簧bean调用该方法,则仅考虑此注释。如果从同一个spring bean(this.save()
)调用它,则不会调用AOP代理,因此不会启动Transaction。
您可以通过至少三种不同的方式处理问题:
@Transactional
方法或logIn
注释