EclipseLink/Examples/JPA/MappingSelectionCriteriaによると、OneToOne または OneToMany の関係でフィルタリングを行うことができます。そのためには、実装する必要がありますDescriptorCustomizer
。
私の質問は次のとおりです。この手法で条件付きフィルタリングを行うことはできますか?また、その方法は? つまり、言及されたリンクの例では、次のようなものを書くことができます
public class ConfigureBsFilter implements DescriptorCustomizer {
public void customize(ClassDescriptor descriptor) throws Exception {
OneToManyMapping mapping = (OneToManyMapping) descriptor
.getMappingForAttributeName("bs");
ExpressionBuilder eb = new ExpressionBuilder(mapping
.getReferenceClass());
Expression fkExp = eb.getField("A_ID").equal(eb.getParameter("A_ID"));
Expression activeExp = eb.get("active").equal(true);
mapping.setSelectionCriteria(fkExp.and(activeExp));
}
}
しかし、式の場合はどうなりますか
Expression activeExp = eb.get("active").equal(true);
これ"active"
は常にではありませんtrue
が、何らかのパラメーターによって実行時に設定する必要があります。私はそれを行うことができますか?