• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?


  • Subject: Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?
  • From: OC <email@hidden>
  • Date: Wed, 13 Apr 2016 20:18:49 +0200

Thanks both of you. Very weird: always, far as I can recall, even years ago when in my hierarchy used to be EOGenericRecord instead of ERX... one, they were nulls :-O (Of course there is a slight probability my memory plays tricks on me, but I do recall in the old bad days when I used Java, I had to check for this explicitly to prevent NPEs...)

I wonder what might be causing that.

Anyway, if the first thing after DB initialization I do is

===
        def ectxt=ERXEC.newEditingContext()
        def neweo=DBDataBlock.newInstance()
        for (def cl=neweo.class;cl;cl=cl.superclass) println "- $cl"
        println "created: ${neweo.storedValueForKey('actions')}"
        ectxt.insertObject(neweo)
        println "inserted: ${neweo.storedValueForKey('actions')}"
        ectxt.saveChanges()
        println "saved: ${neweo.storedValueForKey('actions')}"
        ectxt.refaultObject(neweo)
        println "refetched: ${neweo.storedValueForKey('actions')}"
===

I am getting

===
- class model.DBDataBlock
- class cz.ocs.model.OCSEnterpriseObject
- class er.extensions.eof.ERXGenericRecord
- class com.webobjects.eocontrol.EOGenericRecord
- class com.webobjects.eocontrol.EOCustomObject
- class java.lang.Object
created: null
inserted: null
saved: null
refetched: []
===

No, I do not override storedValueForKey (I do create the accessors, so wrong “neweo.actions()” might be my fault; but storedValueForKey?!?)

Hmmm.... interesting. What on earth might be causing this?

Thanks,
OC

On 13. 4. 2016, at 19:51, Ricardo Parada <email@hidden> wrote:

> I would make sure the EO has ERXGenericRecord somewhere in its class hierarchy that the EO is inserted in the editing context before you do anything with it.
>
>
>
>> On Apr 13, 2016, at 1:18 PM, Chuck Hill <email@hidden> wrote:
>>
>> I suspect your code.  If it is newly inserted and saved (and even unsaved I think) they should be an empty array, not null.
>>
>>
>>
>>
>>
>>
>>> On 2016-04-13, 10:12 AM, "webobjects-dev-bounces+chill=email@hidden on behalf of OC" <webobjects-dev-bounces+chill=email@hidden on behalf of email@hidden> wrote:
>>>
>>> Hi there,
>>>
>>> with ERXEOControlUtilities.objectCountForToManyRelationship I have bumped into a weird problem — with newly created EOs it fails, yelling that “... is not a toMany relationship! Expected an NSArray, but got null” (exact copy below).
>>>
>>> Now, perhaps I do something wrong, but it seems to me it is perfectly normal in EOF that all to-manys of a newly created EO are null? At the very least, whenever I checked, they were.
>>>
>>> So far, the only fix I have found is to refault the newly created object immediately, which helps (fetch replaces those nulls by empty arrays), but it is pretty ugly:
>>>
>>> ===
>>>      DBDataBlock bc=... create new EO and insert it into an EC ...
>>>      ... set it up ...
>>>      if (!ec.saveChanges()) return ERROR...
>>>      bc.editingContext.refaultObject(bc) // <==== this helps. Without this line, to-manys are nulls now
>>> ===
>>>
>>> Is there any better solution?
>>>
>>> And what am I overlooking? To me, the check for null in objectCountForToManyRelationship looks like a bug.
>>>
>>> Thanks a lot,
>>> OC
>>>
>>> ===
>>> 18:53:43.124 WARN  <er.extensions.appserver.ERXComponentRequestHandler>: Exception occurred while handling request:
>>> java.lang.IllegalArgumentException: The attribute named 'actions' in the entity named 'DBDataBlock' is not a toMany relationship! Expected an NSArray, but got null.       //log:NSLog [WorkerThread0]
>>> [2016-4-13 18:53:43 CEST] <WorkerThread0> java.lang.IllegalArgumentException: The attribute named 'actions' in the entity named 'DBDataBlock' is not a toMany relationship! Expected an NSArray, but got null.
>>>   at er.extensions.eof.ERXEOControlUtilities.objectCountForToManyRelationship(ERXEOControlUtilities.java:802)
>>> ...
>>> ===
>>> _______________________________________________
>>> 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
>>
>> _______________________________________________
>> 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


 _______________________________________________
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


  • Follow-Ups:
    • Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?
      • From: Chuck Hill <email@hidden>
References: 
 >ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails? (From: OC <email@hidden>)
 >Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails? (From: Chuck Hill <email@hidden>)
 >Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails? (From: Ricardo Parada <email@hidden>)

  • Prev by Date: Re: Why Maven all of a sudden
  • Next by Date: Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?
  • Previous by thread: Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?
  • Next by thread: Re: ERXEOControlUtilities.objectCountForToManyRelationship for new objects fails?
  • Index(es):
    • Date
    • Thread