Apologize if this is a dup -- original post appeared to have been eaten.

I'm trying run two very similar queries with the only difference being in 
the join condition.  I want to create single function to handle both 
queries, and just pass the correct join condition.  Something like:

public CustomerDTO noCondition(Integer id) {

    Condition condition = new TrueCondition();
    return getCustomerParentById(id, condition);
}

public CustomerDTO special(Integer id, List<Integer> specialList) {

    Condition condition = new 
InCondition(CUSTOMERS.CUSTOMER_ID.in(specialList));
    return getCustomerParentById(id, condition);
}

private List<CustomerDTO> getCustomerParentsById(Integer id, Condition 
condition) {

    List<CustomerDTO> customerDTOList = dslContext
            .select(CUSTOMERS.CUSTOMER_ID.as("id"),
                    
DSL.choose().when(PERSON.CUSTOMER_ID.notEqualIgnoreCase(""), PERSON.FIRST_NAME)
                            .otherwise(INSTITUTIONS.NAME)
                            .as("name"),
                    CUSTOMERS.CUSTOMER_NUMBER.as("customerNumber"),
                    CUSTOMER_TYPES.CUSTOMER_TYPE.as("customerType"), 
CUSTOMER_TYPES.CUSTOMER_TYPE_ID.as("customerTypeId"))
            .from(CUSTOMERS)
            
.join(CUSTOMER_HIERARCHY).on(CUSTOMERS.CUSTOMER_ID.eq(CUSTOMER_HIERARCHY.PARENT_CUSTOMER_ID).and(condition))
            
.leftOuterJoin(CUSTOMER_TYPES).on(CUSTOMERS.CUSTOMER_TYPE_ID.eq(CUSTOMER_TYPES.CUSTOMER_TYPE_ID))
            
.leftOuterJoin(PERSON).on(PERSON.CUSTOMER_ID.equal(CUSTOMERS.CUSTOMER_ID))
            
.leftOuterJoin(INSTITUTIONS).on(INSTITUTIONS.CUSTOMER_ID.equal(CUSTOMERS.CUSTOMER_ID))
            .where(CUSTOMER_HIERARCHY.CUSTOMER_ID.eq(id))
            .fetchInto(CustomerDTO.class);


    return customerDTOList;
 
}


But I apparently can't create standalone Condition objects.  Is there any 
way I can accomplish this (or something similar)?

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to