Hi,

On 2015-03-01, 7:51 AM, "OC" wrote:

Hello there,

I'll need to copy thousands of objects from one table to another; the 
copying'll be almost verbatim, but for a relationship. Namely,

entity OldAuction <->> OldRecord (relationships records->> and inverse 
<-auction)
entity NewAuction <->> NewRecord (relationships records->> and inverse 
<-newAuction)

Entity NewRecord has all attributes of OldRecord (and perhaps a couple of 
others)

The naïve code would be something like

===
def orig=... an object of the OldAuction entity ...
def new=... an object of the NewAuction entity ...
orig.allRecords().each { OldRecord old ->
  def 
newRecord=EOUtilities.createAndInsertInstance(new.editingContext(),'NewRecord')
  newRecord.newAuction=new
  newRecord.takeValuesFromDictionary(old.valuesForKeys(old.attributeKeys()))
}
new.editingContext().saveChanges()
===

I'd do this in batches, say 200 - 1000 auctions and then save, dispose the EC, 
create a new one and loop.  That avoid any possible problems with too much 
retained memory.


There's no need to make this lightning fast, e.g., a dedicated SQL procedure 
would definitely be an overkill; but still, it should be as fast as possible 
without making the code too complex, unintelligible and unmaintainable. I 
wonder, what's the best way? Guess I might e.g., fetch rawrows for 
orig.allRecords somehow, and use _them_ for the takeValuesFromDictionary 
argument?

As long as you just want data values and not EOs for a relationship.

Chuck

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

This email sent to arch...@mail-archive.com

Reply via email to