cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Razumovsky <razumovsky.and...@gmail.com>
Subject Re: API wish(es)
Date Mon, 06 Apr 2009 11:51:46 GMT
The correct way to get fresh object is similiar to the method in
DataObjectUtils:

public static Object freshObjectForPK(ObjectContext context, ObjectId id) {
        return DataObjectUtils.objectForQuery(context, new ObjectIdQuery(
                id,
                false,
                ObjectIdQuery.REFRESH));
    }

BTW right here's a method which returns one object of query result

2009/4/6 Borut BolĨina <borut.bolcina@gmail.com>

> Hi,
>
> would it be possible to add one method in DataObjectUtils,
>
> DataObjectA dataObjectA = DataObjectUtils.objectForPK(dataContext,
> DataObjectA.class, 1, QueryCacheStrategy.NO_CACHE);
>
> which would always return a fresh object.
>
>
> By the way, is this the correct way of fetching an object directly
> from database?
>
> Expression e = ExpressionFactory.matchExp(DataObjectA.ID_PK_COLUMN, "1");
> SelectQuery query = new SelectQuery(DataObjectA.class, e);
> query.setCacheStrategy(QueryCacheStrategy.NO_CACHE);
> List list = dataContext.performQuery(query);
>
> DataObjectA objectA= null;
> if (list.size() > 0) {
>    objectA= (DataObjectA) list.get(0);
> }
>
> The above code would still use object cache, right, so I will not be
> getting the object with values as set in database (maybe changed by
> 3rd party process). How to overcome this in the above code?
>
> Also, wouldn't it be convenient if performQuery could return just one
> object so we do not have to always type the boilerplate
> if(list.size>0) ?
>
> Regards,
> Borut
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message