Re: API wish(es)

From: Borut Bolčina (borut.bolcin..mail.com)
Date: Mon Apr 06 2009 - 17:29:00 EDT

  • Next message: Dave Lamy: "Re: Quick query question"

    OK, RTFM to myself http://cayenne.apache.org/doc/objectidquery.html

    2009/4/6 Borut Bolčina <borut.bolcin..mail.com>

    > 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 - 17:29:32 EDT