EclipseLink/Examples/JPA/MappingSelectionCriteria에 따르면 OneToOne 또는 OneToMany 관계에 대한 필터링을 만들 수 있습니다. 그렇게하려면 DescriptorCustomizer
을 구현해야합니다.Eclipselink JPA MappingSelectionCriteria 사용자 정의
내 질문 :이 기술로 일부 조건부 필터링을 수행 할 수 있습니까? 내가 언급 한 링크의 예에서 우리는 경우
Expression activeExp = eb.get("active").equal(true);
"active"
항상 true
하지 않은 표현이
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));
}
}
같은 그러나 무엇을 쓸 수있는, 의미하지만 일부에 의해 런타임에 설정해야합니다 매개 변수. 나는 그것을 어떻게 할 수 있습니까?
여기에는 나쁜 아이디어가 있습니다. 완료되면 엔티티는 더 이상 데이터베이스에있는 것을 나타내지 않으며 컨텍스트에 병합중인 항목을 확인하지 못합니다. 엔티티가 읽은 엔티티를 필터링합니다. 일반적으로 매핑되지 않거나 게으르며 액세스 할 필요가 없으며 필요에 따라 필터를 사용하여 참조 된 객체를 쿼리하지 않는 것이 좋습니다. – Chris