我遇到以下问题...我想使用Hibernate筛选器来筛选特定于租户的数据。我实现了AOP方面(Spring AOP)以在将查询发送到数据库服务器之前启用筛选器。那很完美。但是,在某些情况下,应禁用此过滤功能(登录,检索车辆制造商等)。因此,我将切入点扩展如下:
@Before("!@annotation(com.example.persistence.DisableTenantFilter) && " +
"execution(* com.example.persistence.repository.*.*.*(..))")
public void applyFilter(JoinPoint joinPoint) {}
应该为存储库子包BUT中所有类中的所有方法触发该方面,而不是为那些用 @DisableTenantFilter 注释的方法触发该方面。当前,对于使用该注释进行注释的方法,也会触发该方面。
示例存储库(在这种情况下,不应执行方面):
@Repository
public interface UserRepository extends BaseRepository<User, Long> {
@DisableTenantFilter
@Query("SELECT u FROM User u WHERE u.username=:username")
User retrieveByUsernameForLogin(@Param("username") String username);
}
知道我在做什么错吗?