我本质上需要在运行时定义一个自定义休眠过滤器,我不确定这是否可行。
基本上,用户将传入一个表示过滤器的对象,该过滤器由以下模式定义 -
<attributeGroup name="FilterAttributes">
<attribute name="Name" type="string" use="required"/>
<attribute name="Operation" type="string" use="required"/>
<attribute name="Value" type="string" use="required"/>
</attributeGroup>
<complexType name="Filter">
<attributeGroup ref="F:FilterAttributes"/>
</complexType>
<complexType name="FilterCriteria">
<sequence>
<element name="Filter" type="F:Filter" minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</complexType>
<element name="FilterCriteria" type="F:FilterCriteria"/>
所以想法是用户将传入一个表示此结构的对象,我会动态创建一个过滤器 - 要过滤的属性/数据库列的名称,比较中使用的运算符以及要比较的值反对。
我知道我可以定义我的过滤器并参数化我的 HBM 中的值或使用注释,但这不会让我在运行时更改运算符。我可以为我们计划允许过滤的每一列定义一个过滤器,但我宁愿不必为用户可以传入的每个可能的运算符指定一个过滤器。
是否可以在运行时构造/修改过滤器,这样我就可以做到这一点?