Re: ExistsInRelationshipQualifier
Re: ExistsInRelationshipQualifier
- Subject: Re: ExistsInRelationshipQualifier
- From: Chuck Hill <email@hidden>
- Date: Mon, 19 May 2008 16:19:22 -0700
On May 19, 2008, at 3:30 PM, James Cicenia wrote:
Did this ever work for you?
Yes, frequently.
I have just started using this query and am getting:
[2008-05-19 17:17:07 CDT] <WorkerThread1>
java.lang.NullPointerException
at
com
.webobjects
.eoaccess
.EOSQLExpression._aliasForRelationshipPath(EOSQLExpression.java:324)
at
com
.webobjects
.eoaccess
.EOSQLExpression
._aliasForRelatedAttributeRelationshipPath(EOSQLExpression.java:259)
at
com
.houdah
.webobjects
.eoaccess
.qualifiers
.ExistsInRelationshipQualifierSupport
.sqlStringForSQLExpression(ExistsInRelationshipQualifierSupport.java:
100)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$Support._sqlStringForSQLExpression(EOQualifierSQLGeneration.java:151)
Bonus points if you actually provide the code for _how_ your are using
it...
And, I updated the qualifier from the posted link to the java file
ExistsInRelationshipQualifierSupport
There have been some bugs in this for certain usage patterns. Pierre
and I were looking at it just last week. Can you try this (one at a
time, please), and let us know the results.
1. Edit
ExistsInRelationshipQualifierSupport.sqlStringForSQLExpression(), find
the bit of code like the below, and edit it to look like this (if it
does not already):
if (joinCount > 0) {
for (int j = 0; j < joinCount; j++) {
EOJoin join = (EOJoin) joins.objectAtIndex(j);
EOAttribute sourceAttribute = join.sourceAttribute();
EOAttribute destinationAttribute = join.destinationAttribute();
subBuffer.append(" AND ");
subBuffer.append(expression._aliasForRelatedAttributeRelationshipPath(
sourceAttribute, Qualifier.allButLastPathComponent(keyPath)));
subBuffer.append(" = ");
subBuffer
.append(subExpression._aliasForRelatedAttributeRelationshipPath(
destinationAttribute, ""));
}
}
2. Edit Qualifier.allButLastPathComponent() to be like this:
public static String allButLastPathComponent(String path)
{
int i = path.lastIndexOf(KEY_PATH_SEPARATOR_CHAR);
return (i < 0) ? "" : path.substring(0, i);
}
Did either of those fix things for you?
Chuck
On Dec 5, 2007, at 1:25 PM, David Holt wrote:
Hi Pierre,
Thanks for the reply. I was using the QualifierAdditions available
at your blog, so I am sure that the line numbers don't match with
Daniele's. Chuck sent me an updated version of that framework last
night which didn't work and gives different line numbers than the
error I reported yesterday.
I will switch to the Houdah frameworks before I make a detailed
report of the error. I have imported the projects into Eclipse from
the Google SVN repository but there are a ton of errors showing up
in Eclipse. Is that the correct procedure? Can you tell me which
projects I need to install as frameworks to import into my project?
Once I get that up and running, I'll report back. Thanks!
David
On 5-Dec-07, at 9:27 AM, Pierre Bernard wrote:
Hi David!
Seems like you are experiencing the same crash as Daniele.
Unfortunately the line numbers in the stack trace don't much with
what I have in the Google Code repository.
Your stack trace shows a call to
_aliasForRelatedAttributeRelationshipPath at line 99 of
ExistsInRelationshipQualifierSupport. I find 2 such calls. One at
line 119 and one at 123. Which one is it?
How come the lines don't match?
What do the joins between the tables look like? Single or compound
foreign keys? Any flattened relationships?
Could you tell me what expression, subExpression, sourceAttribute
and destinationAttribute look like at the moment of the crash?
Pierre
On Dec 5, 2007, at 2:51 AM, David Holt wrote:
Hello All,
I am finally getting the chance to use the QualifierAdditions
from Pierre Bernard (thanks Pierre!). I am using the following
code that generates a NullPointerException. Can anyone see what I
have done wrong?
I am trying to show all Artifacts that have not been specified as
"favourites".
public EOFetchSpecification getPubliclyDisplayed() {
EOQualifier q1 = new EOKeyValueQualifier( "userName",
EOQualifier.QualifierOperatorEqual, applicationUser.userName());
ExistsInRelationshipQualifier q2 = new
ExistsInRelationshipQualifier("applicationUsers", q1);
// the inverse
EONotQualifier notq2 = new EONotQualifier(q2);
// EOQualifier q3 = new EOAndQualifier( new NSArray( new
Object[] { q1, notq2 } ) );
EOFetchSpecification fs = new EOFetchSpecification( "Artifact",
notq2, null );
return fs;
}
Stack trace:
java.lang.NullPointerException
File
Line#
Method
Package
EOSQLExpression.java
324
_aliasForRelationshipPath
com.webobjects.eoaccess
EOSQLExpression.java
259
_aliasForRelatedAttributeRelationshipPath
com.webobjects.eoaccess
ExistsInRelationshipQualifierSupport.java
99
sqlStringForSQLExpression
com.houdah.webobjects.eoaccess.qualifiers
EOQualifierSQLGeneration.java
151
_sqlStringForSQLExpression
com.webobjects.eoaccess
EOSQLExpression.java
1024
prepareSelectExpressionWithAttributes
com.webobjects.eoaccess
JDBCExpression.java
273
prepareSelectExpressionWithAttributes
com.webobjects.jdbcadaptor
EOSQLExpressionFactory.java
226
selectStatementForAttributes
com.webobjects.eoaccess
ERXSQLHelper.java
461
sqlExpressionForFetchSpecification
er.extensions
ERXSQLHelper.java
513
rowCountForFetchSpecification
er.extensions
ERXEOAccessUtilities.java
284
rowCountForFetchSpecification
er.extensions
ERXBatchingDisplayGroup.java
189
rowCount
er.extensions
ERXBatchingDisplayGroup.java
216
refetch
er.extensions
ERXBatchingDisplayGroup.java
276
fetch
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
- - -
Houdah Software s. à r. l.
http://www.houdah.com
HoudahGeo: One-stop photo geocoding
HoudahSpot: Powerful Spotlight frontend
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
--
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve specific
problems.
http://www.global-village.net/products/practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden