Hibernate @Where 注解动态禁用条件
如果想在某个场景取消 @Where 注解中的条件,可以使用 @Filter 注解。
首先,在实体类中添加 @FilterDef 注解,定义一个过滤器。
@Entity
@FilterDef(name='deletedFilter', parameters=@ParamDef(name='isDeleted', type='boolean'))
@Where(clause='is_deleted = true')
public class MyEntity {
...
}
然后,在需要取消 @Where 注解条件的场景中,使用 @Filter 注解来覆盖默认的 @Where 注解。
Session session = entityManager.unwrap(Session.class);
Filter filter = session.enableFilter('deletedFilter');
filter.setParameter('isDeleted', false);
这样就可以在特定场景下禁用实体类中的 @Where 注解条件。
原文地址: https://www.cveoy.top/t/topic/nWS9 著作权归作者所有。请勿转载和采集!