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 20:21:54 -0400
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/
_______________________________________________
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