Hi,
so if this is the table:
create table health_monitor (id int not null, date_check datetime, primary
key (id)) engine=InnoDB;
then this
ObjectId id = new ObjectId("health_monitor", HealthMonitor.ID_PK_COLUMN, 1);
HealthMonitor healthMonitor = (HealthMonitor)
DataObjectUtils.objectForQuery(dataContext, new ObjectIdQuery(id,
false, ObjectIdQuery.CACHE_REFRESH));
Date date = healthMonitor.getDateCheck();
would be equivalent for
select date_check from health_monitor where id=1;
in plain old sql?
I did not actually try the above code, so I don't know if it really works,
but I feel there must be a simpler way?!?
Regards,
Borut
2009/4/6 Andrey Razumovsky <razumovsky.andre..mail.com>:
> 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.bolcin..mail.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
>>
>
This archive was generated by hypermail 2.0.0 : Mon Apr 06 2009 - 14:41:19 EDT