arminw 2005/01/13 17:43:27
Modified: src/java/org/apache/ojb/broker/core
PersistenceBrokerImpl.java
Log:
workaround, fix problem when using PB#getObjectByQuery(...) with
QueryByIdentity and 'null' PK fields
Revision Changes Path
1.109 +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.108
retrieving revision 1.109
diff -u -r1.108 -r1.109
--- PersistenceBrokerImpl.java 6 Jan 2005 21:00:00 -0000 1.108
+++ PersistenceBrokerImpl.java 14 Jan 2005 01:43:27 -0000 1.109
@@ -1626,20 +1626,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
{
@@ -1650,7 +1655,6 @@
resources instantly
*/
OJBIterator it = getIteratorFromQuery(query, cld);
- Object result = null;
/*
arminw:
patch by Andre Clute, instead of taking the first found result
@@ -1673,8 +1677,8 @@
{
if(it != null) it.releaseDbResources();
}
- return result;
}
+ return result;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]