小编Dan*_*mes的帖子

Spring @CacheEvict使用通配符

在@CacheEvict中有没有使用通配符的方法?

我有一个多租户应用程序,有时需要从租户的缓存中驱逐所有数据,但不是系统中所有租户的数据.

请考虑以下方法:

@Cacheable(value="users", key="T(Security).getTenant() + #user.key")
public List<User> getUsers(User user) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以,我想做的事情如下:

@CacheEvict(value="users", key="T(Security).getTenant() + *")
public void deleteOrganization(Organization organization) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

无论如何要做到这一点?

java spring caching

14
推荐指数
2
解决办法
5172
查看次数

使用spring-boot和spring-data全局启用hibernate过滤器

我试图通过Spring Boot和Spring Data实现鉴别器实现的多租户.

我创建了一个抽象类来表示一个多租户实体.与此类似的东西:

@MappedSuperclass
@FilterDefs({@FilterDef(name = "multi-tenant", parameters = {@ParamDef(name = "tenant", type = "string")})})
@Filter(name = "multi-tenant", condition = "tenant = :tenant")
public abstract class MultiTenantEntity extends GenericEntity {
    @Transient
    private transient String savedTenant;

    @PostLoad
    private void onLoad() throws Exception {
        this.savedTenant = this.tenant;
        onEntityModification();
    }

    @PrePersist
    private void onPersist() {
        if (getId() == null || getId().equals(0l)) {
            tenant = SecurityUtil.getCurrentTenant();
        }
    }

    @PreUpdate
    @PreRemove
    private void onEntityModification() throws Exception {
        String currentTenant = SecurityUtil.getCurrentTenant();

        if (!currentTenant.equals(tenant) || …
Run Code Online (Sandbox Code Playgroud)

java hibernate spring-data spring-data-jpa spring-boot

12
推荐指数
1
解决办法
3370
查看次数