Spring JPA + Hibernate 将 Where 条件添加到我的整个模型中

Posted

技术标签:

【中文标题】Spring JPA + Hibernate 将 Where 条件添加到我的整个模型中【英文标题】:Spring JPA + Hibernate Add Where condition to my entire model 【发布时间】:2016-10-02 18:25:51 【问题描述】:

我目前正在开发一个新项目,我们正在通过 Hibernate 使用 Spring DATA。

所以问题是我们的基本模型有 3 个字段“IsActive”“IsDeleted”和“AccessLevel” 这些背后的想法是任何记录都可以被停用和逻辑删除。 我想我可以在我的 Base 类上写 @Where 注释并在那里写子句IsActive=true AND IsDeleted=false

但是访问级别是在认证用户中,所以DB中的所有记录都继承了字段访问级别,并且是一个int,所以访问级别为0的记录是公开的,访问级别为1的人可以找到具有以下权限的记录1 级和 0 级,但不是 2 级。

有没有办法在我的 baseModel 或我的 CustomBaseRepository 中实现它?

【问题讨论】:

【参考方案1】:

对于访问限制,您可能想看看休眠过滤器: https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch19.html

hibernate 文档展示了如何在会话中激活过滤器,但没有展示如何使其始终处于活动状态。

您似乎想实现这一目标,请查看以下问题:How to enable hibernate filter for sessionFactory.getCurrentSession()?

那里提供的答案:在 hibernate openSession 方法上使用 aop 启用过滤器,应该也适用于 spring-data。

【讨论】:

以上是关于Spring JPA + Hibernate 将 Where 条件添加到我的整个模型中的主要内容,如果未能解决你的问题,请参考以下文章

何时使用 Spring JPA (Hibernate) Entity Manager 将连接返回到连接池?

Spring Data JPA + Hibernate 将方法标记为事务

JPA Hibernate jpa spring data jpa

ssh(sturts2_spring_hibernate) 框架搭建之JPA代替hibernate

Spring JPA + Hibernate 将 Where 条件添加到我的整个模型中

Spring JPA/Hibernate EmptyInterceptor 不注入 Entitymanager/Spring bean