You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2005/01/14 02:35:42 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/core PersistenceBrokerImpl.java

arminw      2005/01/13 17:35:42

  Modified:    src/java/org/apache/ojb/broker/core Tag: OJB_1_0_RELEASE
                        PersistenceBrokerImpl.java
  Log:
  workaround, fix problem when using PB#getObjectByQuery(...) with QueryByIdentity and 'null' PK fields
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.83.2.10 +11 -7     db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java
  
  Index: PersistenceBrokerImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java,v
  retrieving revision 1.83.2.9
  retrieving revision 1.83.2.10
  diff -u -r1.83.2.9 -r1.83.2.10
  --- PersistenceBrokerImpl.java	12 Dec 2004 01:49:43 -0000	1.83.2.9
  +++ PersistenceBrokerImpl.java	14 Jan 2005 01:35:42 -0000	1.83.2.10
  @@ -1524,20 +1524,25 @@
        */
       public Object getObjectByQuery(Query query) throws PersistenceBrokerException
       {
  +        Object result = null;
           if (query instanceof QueryByIdentity)
           {
               // example obj may be an entity or an Identity
               Object obj = query.getExampleObject();
  -            Identity oid = null;
               if (obj instanceof Identity)
               {
  -                oid = (Identity) obj;
  +                Identity oid = (Identity) obj;
  +                result = getObjectByIdentity(oid);
               }
               else
               {
  -                oid = new Identity(obj, this);
  +                // TODO: This workaround doesn't allow 'null' for PK fields  
  +                if (!serviceBrokerHelper().hasNullPKField(getClassDescriptor(obj.getClass()), obj))
  +                {
  +                    Identity oid = serviceIdentity().buildIdentity(obj);
  +                    result = getObjectByIdentity(oid);
  +                }
               }
  -            return getObjectByIdentity(oid);
           }
           else
           {
  @@ -1548,7 +1553,6 @@
               resources instantly
               */
               OJBIterator it = getIteratorFromQuery(query, cld);
  -            Object result = null;
               /*
               arminw:
               patch by Andre Clute, instead of taking the first found result
  @@ -1571,8 +1575,8 @@
               {
                   if(it != null) it.releaseDbResources();
               }
  -            return result;
           }
  +        return result;
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org