Hibernate 过滤器默认条件不起作用
Hibernate filter default condition is not working
我正在尝试集成过滤器以根据登录用户角色附加 SQL,但看起来默认条件不起作用。
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "ASSET_TYPE")
@FilterDef(name="PartnerFilter",
parameters=@ParamDef( name="isDomainRelevant", type="boolean" ), defaultCondition = "isDomainRelevant= true")
@Filter(name = "PartnerFilter")
public class AssetTypeEntity implements IdEntity<UUID> {
启用过滤器的休眠代码:
Session session = ((EntityManager) retVal).unwrap(Session.class);
session.enableFilter("PartnerFilter");
上面的代码抛出一个异常,说 isDomainRelevant 没有设置,但如果明确设置它,那么它的工作方式类似于下面
Session session = ((EntityManager) retVal).unwrap(Session.class);
session.enableFilter("PartnerFilter").setParameter("isDomainRelevant", true);
问题是我们不应该在@ParamDef( name="isDomainRelevant", type="boolean" ) 中定义变量,如果定义了变量那么它认为我们想要动态提供它们。所以参数的默认条件和定义是相互独立的。我们不需要定义我们在默认情况下使用的参数。事实上我们在默认条件下写的是一个原生的 sql 查询。
以下配置效果很好
@FilterDef(name="PartnerFilter",
defaultCondition = "isDomainRelevant= true")
我正在尝试集成过滤器以根据登录用户角色附加 SQL,但看起来默认条件不起作用。
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "ASSET_TYPE")
@FilterDef(name="PartnerFilter",
parameters=@ParamDef( name="isDomainRelevant", type="boolean" ), defaultCondition = "isDomainRelevant= true")
@Filter(name = "PartnerFilter")
public class AssetTypeEntity implements IdEntity<UUID> {
启用过滤器的休眠代码:
Session session = ((EntityManager) retVal).unwrap(Session.class);
session.enableFilter("PartnerFilter");
上面的代码抛出一个异常,说 isDomainRelevant 没有设置,但如果明确设置它,那么它的工作方式类似于下面
Session session = ((EntityManager) retVal).unwrap(Session.class);
session.enableFilter("PartnerFilter").setParameter("isDomainRelevant", true);
问题是我们不应该在@ParamDef( name="isDomainRelevant", type="boolean" ) 中定义变量,如果定义了变量那么它认为我们想要动态提供它们。所以参数的默认条件和定义是相互独立的。我们不需要定义我们在默认情况下使用的参数。事实上我们在默认条件下写的是一个原生的 sql 查询。
以下配置效果很好
@FilterDef(name="PartnerFilter",
defaultCondition = "isDomainRelevant= true")