Re: WODisplayGroup repeats the same EO
Re: WODisplayGroup repeats the same EO
- Subject: Re: WODisplayGroup repeats the same EO
- From: David Avendasora <email@hidden>
- Date: Sat, 03 Sep 2011 08:06:32 +0800
On Sep 3, 2011, at 1:50 AM, Ray Kiddy wrote:
>
> On Sep 2, 2011, at 12:35 AM, David Avendasora wrote:
>
>> Hi all,
>>
>> This is one for posterity. AKA: When I'm an idiot in the future.
>>
>> I was having a problem with a WODisplayGroup that would have the right number of objects in the selectedObjects Array, but they were all instances of the same EO.
>>
>> Easy, you say; there's something wrong with the item setter on the WORepetition. Not so fast. It the setter was fine. The SQL that was being used to fetch the data was right too.
>>
>> The model was wrong. The PK in the FrontBase DB was a LONGINT, but the PK in the EOModel had an external type of INT. The value stored in the DB field was not too long for an INT and an ALTER TABLE statement changed it without issue. Apparently there something about the process in the JDBC driver or EOF that chokes on it turning a Long into an Integer, but not enough to throw an exception, but enough to make all the values the same, in a non-deterministic way. If I quit and relaunched the app, it would likely repeat a different instance, but not always.
>>
>> Dave _______________________________________________
>
> Was this in a Wonder app or a vanilla WO app?
Ray, have you forgotten Montreal already?! There's no such thing as a vanilla WO app anymore. ;-) It's a Wonder app.
> One thing that has occurred to me in the past is that there can be some model validation on application launch. If this problem was logged out from the app, would that have helped.
Well, it was model validation that got me into this mess in the first place! It choked on a FK that was an Integer that pointed to the PK being a Long. I figured that the easy way to fix it would be just to change the model since I knew that the actual values of the field would fit in an Integer just fine. I suppose if the there were a way to have EOF ask the DB directly what the datatypes of the each modeled attribute are, that would be great, but I'm guessing that every DB would have a different way of giving you that info, unless the JDBCInfo has it... don't know. Sounds like a nice solution that would have saved me several hours of head scratching though.
> I know one thing that always gets me in the fact that WOLips will reverse engineer an INT in a MySQL database into a Long. Also, there are bad things that people do in inheritance situations and bad things that people do while setting up certain relationships and we could just say that this is going to be bad.
There is some of that. I'm guessing making sure the DB Plugin is accurate would eliminate a lot of issues.
> A class that would wait for applicationDidLaunch and then check the loaded models could go into ERExtensions. It could start small, people can add rules for the databases they know, and it could just advise on problems and otherwise stay out of the way. Unless this is already done somehow via a name I am not recognizing. Anyone know?
I think just have the DBPlugIn do it. That already contains the glue between EOF and a datastore. Maybe even have an Interface that defines what the checks are so people have some way of seeing what things are left to be implemented for their DB's plugin.
Dave _______________________________________________
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