使用Spring AOP应用hibernate过滤器

时间:2017-03-28 09:35:43

标签: java spring hibernate aop aspectj

我正在尝试使用Spring AOP在数据库表上应用过滤器。我希望此过滤器仅适用于此表。我已经配置了一个Aspect来应用过滤器,但我必须配置错误。

似乎永远不会执行连接点功能。我希望它从休眠的SessionFactory.getCurrentSession()中检索一个会话,并对它应用一个过滤器。

我的方面课程:

@Aspect
@Component
public class MyAspect {

@Pointcut("execution(* org.hibernate.SessionFactory.getCurrentSession(..))")
protected void hibernateSessionFetch() {

}


@AfterReturning(pointcut = "hibernateSessionFetch()", returning = "result")
public void enableFilter(JoinPoint joinPoint, Object result) {

    System.out.println("*********** ASPECT ************");

    Session session = (Session) result;

    User u = new User("John Smith", 20);

    // apply the filter
    Filter filter = session.enableFilter("restrictToUser");
    filter.setParameter("name", u.getName());

}

我的目标班级:

@Entity
@Table(name = "USER")
@org.hibernate.annotations.DynamicInsert
@org.hibernate.annotations.Filter(
  name = "restrictToUser",
  condition="name = :name"
)
@Component
public class User extends com.system.admin.SkeletonDTO<User>
  implements java.io.Serializable {
// user information
}

在XML中我的配置如下:

<context:annotation-config></context:annotation-config>
<aop:aspectj-autoproxy proxy-target-class="true"/>

有谁知道我做错了什么?

0 个答案:

没有答案