Ok, I found my problem.
In the version before prototype of my models, I have this kind of derived 
attributes :
For MySQL :
        {
            allowsNull = Y; 
            definition = "((TO_DAYS(NOW()) - TO_DAYS(patient.dateNaiss)) - 
(TO_DAYS(NOW()) - TO_DAYS(dateArrivee)))/365"; 
            externalType = MEDIUMINT; 
            isReadOnly = Y; 
            name = agePatientAnnee; 
            valueClassName = NSNumber; 
            valueType = i; 
        }, 

For Oracle :
        {
            allowsNull = Y; 
            definition = "trunc((to_number(to_char((dateArrivee),'J')) - 
to_number(to_char((patient.dateNaiss),'J')))/365)"; 
            externalType = NUMBER; 
            isReadOnly = Y; 
            name = agePatientAnnee; 
            valueClassName = NSNumber; 
            valueType = i; 
        }, 

I don't know if it is a really supported use of derived attributes, but it 
works fine.
The problem is that prototype doesn't synchronize the definition setting of an 
attribute.
So, the prototype version below doesn't work :

Attribute :
        {
            columnName = "";
            name = agePatientAnnee;
            prototypeName = agePatientAnnee;
        },

MySQL Prototype :
        {
            allowsNull = Y;
            columnName = "";
            definition = "((TO_DAYS(NOW()) - TO_DAYS(patient.dateNaiss)) - 
(TO_DAYS(NOW()) - TO_DAYS(dateArrivee)))/365";
            externalType = MEDIUMINT;
            isReadOnly = Y;
            name = agePatientAnnee;
            valueClassName = NSNumber;
            valueType = i;
        },

Oracle Prototype :
        {
            allowsNull = Y;
            columnName = "";
            definition = "trunc((to_number(to_char((dateArrivee),'J')) - 
to_number(to_char((patient.dateNaiss),'J')))/365)";
            externalType = NUMBER;
            isReadOnly = Y;
            name = agePatientAnnee;
            valueClassName = NSNumber;
            valueType = i;
        },

So, in my Models initialization, I made this workaround :
                NSArray<EOEntity> entities = l_model.entities();

                for (EOEntity entity : entities) {
                    NSArray<EOAttribute> attrs = entity.attributes();

                    for (EOAttribute attr : attrs) {
                        if (attr.isDerived() && attr.prototype().definition() 
!= null)
                            attr.setDefinition(attr.prototype().definition());
                    }
                }

It works now.

Le 14 mars 2012 à 00:55, Chuck Hill a écrit :

> Maybe you want the Read Format and Write Format on the Advanced tab of the 
> attribute?
> 
> 
> Chuck
> 
> 
> On 2012-03-13, at 11:33 AM, Mertz Stéphan wrote:
> 
>> Hi everybody,
>> 
>> I have a problem with derived attribute and Prototype : the SQL produced by 
>> EOF tries to fetch a column with the name of the attribute, but not the 
>> derived definition.
>> What's wrong ?
>> 
>> Thank you for your help.
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>> 
>> This email sent to [email protected]
> 
> -- 
> Chuck Hill             Senior Consultant / VP Development
> 
> 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/gvc/practical_webobjects
> 
> 
> 
> 
> 
> 
> 
> 


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to