Re: Fetching to-one-relationship: How to use willRead and willReadRelationship?
Re: Fetching to-one-relationship: How to use willRead and willReadRelationship?
- Subject: Re: Fetching to-one-relationship: How to use willRead and willReadRelationship?
- From: Fred Opims <email@hidden>
- Date: Sun, 26 Jun 2011 21:28:50 -0400
Hi Chuck!
I found the problem! Entity Responsable is a subclass of Person entity. So Responsable had two primary keys : responsable_id and person_id.
But the relationship was based only on responsable_id, that's why i got the exception.
To fix the problem, i have removed the constraint primary key on person_id and i kept it on responsable_id because i need responsable_id to be set as primary key in postgresql database!
Thank you for you light .
On Sun, Jun 26, 2011 at 8:47 PM, Chuck Hill
<email@hidden> wrote:
That sure looks like a model problem. It could be that one of the plist files is damaged. Open up the plist files for the two related entities and see if they contain what Entity Modeler is showing.
Have you renamed any entities or attributes?
Chuck
On Jun 26, 2011, at 5:21 PM, Fred Opims wrote:
Hi Chuck!
Thank you for the quick response! .
I made sure that Responsable primary Key is the Vehicule foreign Key and i have validated the model.
Here is the stack trace
Jun 26 20:17:15 TicketManagmentServer[54345] WARN er.extensions.eof.ERXModelGroup - Clearing previous class descriptions
Jun 26 20:17:15 TicketManagmentServer[54345] WARN er.extensions.eof.ERXModelGroup - The EOModel 'erprototypes' has an empty connection dictionary.
Jun 26 20:17:15 TicketManagmentServer[54345] WARN er.extensions.eof.ERXModelGroup - The EOModel 'erprototypes' has an empty connection dictionary.
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - Using JDBCPlugIn 'com.webobjects.jdbcadaptor.PostgresqlPlugIn' for JDBCAdaptor@2019733318
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - Using JDBCPlugIn 'com.webobjects.jdbcadaptor.PostgresqlPlugIn' for JDBCAdaptor@1901677475
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - connecting with dictionary: {plugin = "Postgresql"; username = "postgres"; driver = "org.postgresql.Driver"; password = "<password deleted for log>"; URL = "" }
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - fetching JDBC Info with JDBCContext@1433183189
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - connecting with dictionary: {plugin = "Postgresql"; username = "postgres"; driver = "org.postgresql.Driver"; password = "<password deleted for log>"; URL = "" }
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - === Begin Internal Transaction
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - evaluateExpression: <com.webobjects.jdbcadaptor.PostgresqlExpression: "SELECT t0.annee, t0.couleur, t0.immatriculation, t0.marque, t0.modele, t0.numero_serie, t0.responsable_id, t0.statut_id, t0.sujet_id, t0.type FROM Vehicule t0 WHERE t0.immatriculation like ?::text ESCAPE '|' ORDER BY t0.immatriculation ASC" withBindings: 1:"667PTS"(immatriculation)>
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - 1 row(s) processed
Jun 26 20:17:16 TicketManagmentServer[54345] DEBUG NSLog - === Commit Internal Transaction
Jun 26 20:17:16 TicketManagmentServer[54345] WARN NSLog - <com.opsoft.tms.app.DirectAction>: Exception in performActionNamed() on the action "HandleNewCreatedTicket" with the message: java.lang.NullPointerException
Jun 26 20:17:16 TicketManagmentServer[54345] ERROR er.directtoweb.ERD2WDirectAction - Error with action HandleNewCreatedTicket:java.lang.NullPointerException, formValues:{createTicket = (""); imageData.mimetype = ("application/octet-stream"); imageData = (<class com.webobjects.appserver._private.WOInputStreamData (offset=0, length=768, data="" [63]'?', [120]'x', [109]'m', [108]'l', [32]' ', [118]'v', [101]'e', [114]'r', [115]'s', [105]'i', [111]'o', [110]'n', [61]'=', [34]'"', [49]'1', [46]'.', [48]'0', [34]'"', [32]' ', [101]'e', [110]'n', [99]'c', [111]'o', [100]'d', [105]'i', [110]'n', [103]'g', [61]'=', [34]'"'...)>); imageData.filename = ("ticket.plist"); }
NullPointerException
at com.webobjects.eoaccess.EODatabaseContext._objectFaultWithSnapshotRelationshipEditingContext(EODatabaseContext.java:2356)
... skipped 1 stack elements
at com.webobjects.eoaccess.EOAccessDeferredFaultHandler.createFaultForDeferredFault(EOAccessDeferredFaultHandler.java:49)
at com.webobjects.eocontrol.EOCustomObject.willReadRelationship(EOCustomObject.java:1279)
at er.extensions.eof.ERXGenericRecord.willReadRelationship(ERXGenericRecord.java:409)
at com.webobjects.eocontrol._EOMutableKnownKeyDictionary$Initializer$_LazyGenericRecordBinding.valueInObject(_EOMutableKnownKeyDictionary.java:614)
at er.extensions.eof.ERXGenericRecord$TouchingBinding.valueInObject(ERXGenericRecord.java:205)
at com.webobjects.eocontrol.EOCustomObject.storedValueForKey(EOCustomObject.java:1634)
at com.opsoft.tms._Vehicule.responsable(_Vehicule.java:93)
at com.opsoft.tms.Vehicule.responsable(Vehicule.java:11)
at com.opsoft.tms.app.DirectAction.getDictionaryFromVehicule(DirectAction.java:400)
at com.opsoft.tms.app.DirectAction.vehiculesFromImmatriculation(DirectAction.java:380)
at com.opsoft.tms.app.DirectAction.HandleNewCreatedTicketAction(DirectAction.java:183)
... skipped 4 stack elements
at com.webobjects.appserver.WODirectAction.performActionNamed(WODirectAction.java:144)
at er.extensions.appserver.ERXDirectAction.performActionNamed(ERXDirectAction.java:401)
at er.directtoweb.ERD2WDirectAction.performActionNamed(ERD2WDirectAction.java:449)
... skipped 9 stack elements
On Sun, Jun 26, 2011 at 8:12 PM, Chuck Hill
<email@hidden> wrote:
Hi Fred,
On Jun 26, 2011, at 5:01 PM, Fred Opims wrote:
> Hi!
> I have some problem to a to-one relationship.
> I have an Entity with 3 properties ( color, brand, model) and one relationship Responsable,
>
> When i make a fetch, i'm able to access to all propeties, but i can't access to relation responsable.
> Here is the code
>
> String imm = vehicule.immatriculation(); //Access OK
> String marque = vehicule.marque(); //Access OK
> String modele = vehicule.modele(); //Access OK
>
> When i do
> Responsable resp = vehicule.responsable(); i have a _objectFaultWithSnapshotRelationshipEditingContext exception.
That sounds like you have a problem with data consistency in your database. Turn on SQL logging (launch with -DEOAdaptorDebugEnabled=true).
Or your model is wrong. Can you post the entire exception message and stack trace?
You should very, very rarely need to use willRead and willReadRelationship for anything. You should not be using it here.
Chuck
>
> In the WebObject Entreprise Objects Programming Guide, it is written that the fault is fired when the relationship's data is needed.
>
> But when i do the following, i still have the same _objectFaultWithSnapshotRelationshipEditingContext exception.
>
> String name= vehicule.responsable().name();
> String firstname= vehicule.responsable().firstname();
>
> It is also written to call willRead() before accessing to the relationship's data.
>
> So i did:
> vehicule.willRead();
> String name= vehicule.responsable().name();
> String firstname= vehicule.responsable().firstname();
>
> But it doesn't work. Same exception
>
> After that, in Vehicule.java i did the following as suggested in the doc:
>
> public class Vehicule extends _Vehicule {
> @SuppressWarnings("unused")
> private static Logger log = Logger.getLogger(Vehicule.class);
>
> public com.package.Responsable responsable() {
> willRead();
> return super.responsable();
> }
>
> public static boolean usesDeferredFaultCreation() {
>
> return true;
>
> }
> }
>
> I made sure the my model is valid and that data in the database are well set.
>
> Can you tell me please if i'm using willRead the right way? How can i access to this relationship?
>
> Thank you very much!
>
> Fred
> _______________________________________________
> 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
--
Chuck Hill Senior Consultant / VP Development
Come to WOWODC this July for unparalleled WO learning opportunities and real peer to peer problem solving! Network, socialize, and enjoy a great cosmopolitan city. See you there! http://www.wocommunity.org/wowodc11/
--
Chuck Hill Senior Consultant / VP Development
Come to WOWODC this July for unparalleled WO learning opportunities and real peer to peer problem solving! Network, socialize, and enjoy a great cosmopolitan city. See you there!
http://www.wocommunity.org/wowodc11/
_______________________________________________
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