JPA中是否存在Hibernate filters的等效项? 以下休眠注释可以例如为了用于定义过滤器:用于Hibernate过滤器的JPA等效项
@Entity
@FilterDef(name="minLength", [email protected](name="minLength", type="integer"))
@Filters({
@Filter(name="betweenLength", condition=":minLength <= length and :maxLength >= length"),
@Filter(name="minLength", condition=":minLength <= length")
})
public class Forest { ... }
我想用的东西从JPA相当于以限制读取访问某些实体。如何在没有Hibernate注释的情况下使用干净的JPA来完成这项工作?
我没有找到任何认真和可靠的解决方案。 我分析了“”项目。然而,它的主页在两年前更新了,它的最后一个版本是0.4.0,它似乎不是一个可靠的解决方案。这不是一个标准,它不受欢迎。
Hibernate中可用于限制对实体的读取访问的其他替代方法是Hibernate Interceptor API - 可以实现以下接口方法以附加包含一些附加条件的SQL字符串:
org.hibernate.Interceptor.onPrepareStatement(String sql)
或以下的方法可以被覆盖:
org.hibernate.EmptyInterceptor.onPrepareStatement(String sql)
我发现有一些JPA事件回调和注释,例如@PostLoad。然而,这些都不能用于我的情况,因为我需要根据某些条件(用户角色)限制对实体的访问。
任何人都知道如何使用JPA标准来完成它?
我认为这个回答与问题无关。 @km询问在读取数据期间是如何过滤的,并且您正在引用在写入过程中验证它。 – Julio
答案的要点是JPA事件。 JPA还提供了与读取相关的事件('@ PreLoad'和'@ PostLoad',所以对于读取来说答案也是非常有效的。 – manish