You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Andrus Adamchik <an...@objectstyle.org> on 2007/12/07 13:11:07 UTC

Re: ExtendedType and IN operator

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 <an...@objectstyle.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
>>>
>>
>>
>