首页 新闻 搜索 专区 学院

hibernate多租户,表级别的隔离,如何才能不在业务代码中逐个写租户Id?

0
悬赏园豆:10 [待解决问题]

每个表都强制加tenant_id这个字段

@PostMapping
public void CreateSchool(@RequestBody SchoolDto schoolDto) {
    School school = new School();
    school.setName(schoolDto.getName());
    school.setTenantId(1);//因为每个表都有这个字段,还需要在业务代码里逐个写,感觉很不优雅
    schoolRepository.save(school);
}

以下是实体类

@Entity
@Table(name = "sc_school")
@Getter
@Setter
public class School extends BaseEntity {
    @Column(name = "name")
    public String name;
}

下面是基类

@MappedSuperclass
@Getter
@Setter
public class BaseEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    protected Long id;

    @Column(name = "tenant_id")
    protected Integer tenantId;//租户id,所有表都有这个字段

    @Column(name = "create_time")
    protected Date createTime;
}

需要实现写增删改查业务代码的时候,不需要去考虑这个租户id,需要在某个地方获取前端请求的header里的租户Id,然后自动加上这部分的处理。

ludi的主页 ludi | 初学一级 | 园豆:8
提问于:2020-07-12 10:44
< >
分享
所有回答(1)
0

不太清楚您那边的逻辑。如果整个系统使用的租户是一样的话建议写在配置文件 然后基类读取设置默认值就可以了(注解)

xiyanya | 园豆:310 (菜鸟二级) | 2020-08-25 16:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册