Re: ExtendedType and IN operator

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Fri Dec 07 2007 - 07:11:07 EST

  • Next message: Gilberto C Andrade: "jpa provider"

    Chris,

    I just added a few similar unit tests to 3.0 and they seem to work
    just fine, matching on custom types in the IN list. Could you possibly
    try to upgrade to 3.0M2 and see if the problem is still there?

    Thanks
    Andrus

    On Nov 27, 2007, at 11:56 PM, Chris Gamache wrote:

    > Exact Cayenne Version is 2.0.3
    >
    > Here's the query builder...
    >
    > public static List selectMulti(final DataContext context,final
    > ArrayList<UUID> userUuids, final Date fromDate, final Date toDate,
    > final int status) {
    >
    > ArrayList<Expression> expList = new ArrayList<Expression>();
    >
    > //this is where the trouble is...
    > if (userUuids != null && userUuids.size() > 0)
    > expList.add(ExpressionFactory.inExp(TodOrders.USER_UUID_PROPERTY,
    > userUuids));
    >
    >
    > if (fromDate != null && toDate != null) {
    >
    > expList
    > .add(ExpressionFactory.betweenExp(TodOrders.TRANS_DATE_PROPERTY,
    > fromDate, toDate));
    > } else if (fromDate != null && toDate == null) {
    >
    > expList
    > .add
    > (ExpressionFactory.greaterOrEqualExp(TodOrders.TRANS_DATE_PROPERTY,
    > fromDate));
    > } else if (fromDate == null && toDate != null) {
    >
    > expList
    > .add(ExpressionFactory.lessOrEqualExp(TodOrders.TRANS_DATE_PROPERTY,
    > toDate));
    > }
    >
    > if (status == 1) {
    >
    > expList.add(ExpressionFactory.matchExp(TodOrders.FULFILLED_PROPERTY,
    > null));
    > } else if (status == 2) {
    >
    > expList.add(ExpressionFactory.noMatchExp(TodOrders.FULFILLED_PROPERTY,
    > null));
    > }
    > SelectQuery orderQuery = new
    > SelectQuery(TodOrders.class,ExpressionFactory.joinExp(Expression.AND,
    > expList));
    > orderQuery.addOrdering(new Ordering(TodOrders.TRANS_DATE_PROPERTY,
    > true));
    >
    > return context.performQuery(orderQuery);
    >
    > }
    >
    >
    > On Nov 26, 2007 7:42 AM, Andrus Adamchik <andru..bjectstyle.org>
    > wrote:
    >> Chris,
    >>
    >> I vaguely remember this being a problem in the past and us fixing
    >> it... I couldn't find any references via Google (having "IN" as a
    >> keyword doesn't help). So could you post the code that builds the
    >> query and the exact Cayenne version.
    >>
    >> Thanks
    >> Andrus
    >>
    >>
    >>
    >> On Nov 23, 2007, at 3:39 AM, Chris Gamache wrote:
    >>
    >>> I'm using Cayenne2 and PostgreSQL.
    >>>
    >>> For any single R-value in a where clause, my ExtendedType is working
    >>> wonderfully. But! If I create an expression which uses the operator
    >>> IN, my ExtendedType doesn't seem to get called. In the query logger
    >>> everything looks okay, but pgjdbc complains in the same way that it
    >>> would if there were no exended type. That leads me to believe either
    >>> that Cayenne is ignoring ExtendedTypes when it does the JDBC binding
    >>> for the R-value list, or that I've left out a detail in my
    >>> ExtendedType class which is the culprit. I can post my ExtendedType
    >>> code and some code that misbehaves. Will that suffice, or would you
    >>> need more?
    >>>
    >>> CG
    >>>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Fri Dec 07 2007 - 07:11:42 EST