Andrey, you left me in suspense :) > BTW right here's a method which returns one object of query result
Are you saying use ObjectIdQuery to get one result or is there another normal query that will do it? John- 2009/4/6 Andrey Razumovsky <[email protected]>: > 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 <[email protected]> > >> 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 >> >
