我需要在运行时定义一个自定义的hibernate过滤器,我不确定是否可行。
基本上,用户将传入一个表示过滤器的对象,该过滤器由以下模式定义 -
<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"/>
所以想法是用户会传入一个表示这个结构的对象,我会动态创建一个过滤器 - 要过滤的属性/ db列的名称,要在比较中使用的运算符,以及要比较的价值。
我知道我可以定义我的过滤器并参数化我的HBM中的值或使用注释,但这不会让我在运行时更改运算符。我可以为我们计划允许过滤的每一列定义一个过滤器,但我不必为每个可能传入的操作符指定一个过滤器。
是否可以在运行时构造/修改过滤器,以便我可以实现这一点?