From: Alan Z. <aze...@ma...> - 2007-02-23 19:10:47
|
It looks like you were right. The problem is that ERXModelGroup is access the attributes of an entity which is a subclass of an entity in a model which hasn't been loaded. I found 2 solutions for this. 1. Being able to specify the order in which the models are loaded This should work in most cases, however it might not work if you have something circular. 2. Adding all the models first, and then resetting the connection dictionaries. To do this, I moved the following lines out of addModel(EOModel eomodel): resetConnectionDictionaryInModel(eomodel); NSNotificationCenter.defaultCenter().postNotification (EOModelGroup.ModelAddedNotification, eomodel); And then put a loop before checkInheritanceRelationships() in loadModelsFromLoadedBundles(), that would iterate thought all of the models and reset the connection dictionaries and post the ModelAddedNotification. Both solutions seemed to work in my particular case. I did however run into another problem in that flattenPrototypeAttribute(EOAttribute prototypeAttribute, EOAttribute attribute) will make any derived attributes not to be derived anymore, so this will need to be changed as well. Thanks, Alan On 22-Feb-07, at 6:27 PM, Chuck Hill wrote: > I have an old bit of code in a framework that says: > > /** > * Registers all of the EOModels that we have switched > connection dictionaries for with their > * EODatabase provided that the model's name is not in > modelNamesToIgnore(). This was done to > * work around a bug in this situation: two EOModels, an > EOEntity in one is a sub-class of an > * EOEntity in the other, and an instance of the sub-class is > created before any entities in the > * model containing the superclass are created. This results in > this exception:<br> > * <br> > * java.lang.NullPointerException<br> > * at com.webobjects.jdbcadaptor.FrontbasePlugIn._newPrimaryKey > (FrontbasePlugIn.java:215)<br> > * at com.webobjects.jdbcadaptor.FrontbasePlugIn.newPrimaryKeys > (FrontbasePlugIn.java:205)<br> > * at > com.webobjects.jdbcadaptor.JDBCChannel.primaryKeysForNewRowsWithEntity > (JDBCChannel.java:544)<br> > * at > com.webobjects.eoaccess.EODatabaseContext._batchNewPrimaryKeysWithEnti > ty > (EODatabaseContext.java:5697)<br> > * at > com.webobjects.eoaccess.EODatabaseContext.prepareForSaveWithCoordinato > r( > EODatabaseContext.java:5676)<br> > * at > com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditing > Co > ntext(EOObjectStoreCoordinator.java:389)<br> > * at com.webobjects.eocontrol.EOEditingContext.saveChanges > (EOEditingContext.java:2486)<br> > * <br> > * It appears that when the sub-class referred to its parent > that it was not found in the database. This code just registeres > each EOModel with it's database. > */ > > Does that sound at all plausible to be what is afflicting you? > > > Chuck > > > > On Feb 22, 2007, at 3:15 PM, Alan Zebchuk wrote: > >> Yes. The entity in the other model has a parent entity. >> >> Alan >> >> >> On 22-Feb-07, at 6:07 PM, Chuck Hill wrote: >> >>> Are you using inheritance in any of the relavent entities? >>> >>> >>> On Feb 22, 2007, at 3:02 PM, Alan Zebchuk wrote: >>> >>>> Actually it's not a flattened relationship. At first thought, I >>>> thought it was because it was looking for an Entity in a Model >>>> which >>>> hasn't been loaded yet (which is the case). However, it has already >>>> loaded another model which has relationships to the same entity >>>> which >>>> it now can't find. >>>> >>>> Alan >>>> >>>> On 22-Feb-07, at 5:26 PM, won...@li... >>>> wrote: >>>> >>>>> >>>>> I'm guessing that is a flattened relationship ... I THINK I should >>>>> skip flattened relationships when flattening prototypes? Anyone >>>>> have >>>>> a reason to believe this is not true? >>>> >>>> >>>> ------------------------------------------------------------------- >>>> - >>>> -- >>>> --- >>>> Take Surveys. Earn Cash. Influence the Future of IT >>>> Join SourceForge.net's Techsay panel and you'll get the chance to >>>> share your >>>> opinions on IT & business topics through brief surveys-and earn >>>> cash >>>> http://www.techsay.com/default.php? >>>> page=join.php&p=sourceforge&CID=DEVDEV >>>> _______________________________________________ >>>> Wonder-disc mailing list >>>> Won...@li... >>>> https://lists.sourceforge.net/lists/listinfo/wonder-disc >>>> >>> >>> -- >>> >>> 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 >>> >>> >>> >>> >>> >>> >>> -------------------------------------------------------------------- >>> - >>> ---- >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get the chance to >>> share your >>> opinions on IT & business topics through brief surveys-and earn cash >>> http://www.techsay.com/default.php? >>> page=join.php&p=sourceforge&CID=DEVDEV >>> _______________________________________________ >>> Wonder-disc mailing list >>> Won...@li... >>> https://lists.sourceforge.net/lists/listinfo/wonder-disc >> >> > > -- > > 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 > > > > > > > ---------------------------------------------------------------------- > --- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to > share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php? > page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Wonder-disc mailing list > Won...@li... > https://lists.sourceforge.net/lists/listinfo/wonder-disc |