Hi all,
Sometimes you just need to share things that bite you. I have been having
problems with objectWithPrimaryKeyValue.
Here's what I was calling:
EOUtilities.objectWithPrimaryKeyValue(ec, ENTITY_NAME, Long.valueOf(0))
When it runs, I get:
10:48:59 MyApp[9003] DEBUG NSLog - evaluateExpression:
<com.webobjects.jdbcadaptor.EROracleExpression: "SELECT t0.CODE, t0.DESCRIPTION
FROM STATUSCODE t0 WHERE t0.CODE = ?" withBindings: 1:0(id)>
10:48:59 MyApp[9003] DEBUG NSLog - 1 row(s) processed
10:48:59 MyApp[9003] DEBUG NSLog - === Commit Internal Transaction
10:48:59 MyApp[9003] WARN NSLog -
<com.webobjects.appserver._private.WOComponentRequestHandler>: Exception
occurred while handling request:
com.webobjects.eoaccess.EOUtilities$MoreThanOneException: Selected more than
one item for primary key {id = 0; } in entity SamsStatusCode.
The CODE in the DB is the PK, and I've executed the SQL and it returns exactly
one row, just like you'd expect and the NSLog statement above says, yet I'm
getting the more than one item for PK error.
Steve Meyer came up with the answer: Just because you are getting on SQL row
back, doesn't mean that it doesn't represent more than one EO.
This Entity/Table is part of a Single Table Inheritance structure, and there
are two oddities about the restricting qualifiers:
1) They are on the Primary Key column. For example: "id = 0 or id = 30 or id =
31"
2) They define _ranges_ as well as individual values. For example: "id > 1799
and id < 1810"
This seems to work just fine, except when we have one Entity that has no
restricting qualifier, so when you call
EOUtilities.objectWithPrimaryKeyValue(ec, ENTITY_NAME, Long.valueOf(0))
you get two EOs back. Because two different Entities' restricting qualifier
match "id = 0" .
Happy Monday.
Dave _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]