thanks; what delete do you use?
It looked like deletePersistentAll() accepted only entities (rather than key
values)


On Tue, Aug 2, 2011 at 9:46 AM, Stephen Johnson <onepagewo...@gmail.com>wrote:

> Change your query to something like this:
>
> Query query = pm.newQuery("select ek from " + UploadedContent.class
> .getName());
>
> Where "ek" is the entity key name you use in you JDO class. For example,
> mine is defined like the following:
>
>     @PrimaryKey
>
>     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>
>     @Extension(vendorName="datanucleus", key="gae.encoded-pk", value=
> "true")
>
>     private String ek;
>
> Then, just query for the keys and do a batch delete on the keys. Right now
> you're pulling in all the entity data and then deleting the entities which
> is unnecessary and will slow you do a lot.
>
> Stephen
> CortexConnect (cortexconnect.appspot.com)
>
> On Tue, Aug 2, 2011 at 12:17 AM, Carter <jcmas...@gmail.com> wrote:
>
>> Is this the most efficient code for bulk delete?
>>
>> Is there a "SELECT __key__" technique that's faster?
>>
>> This currently deletes 100 at a time, but it's slow.
>>
>>
>>        public long deleteBefore(Date d, long maxRecords)
>>                        throws DaoException {
>>
>>                PersistenceManager pm = pmf.getPersistenceManager();
>>                Query query = pm.newQuery(UploadedContent.class);
>>                query.setFilter("dateCreated < dateCreatedParam");
>>                query.declareParameters("Date dateCreatedParam");
>>                query.declareImports("import java.util.Date;");
>>                if (maxRecords >= 0) {
>>                        query.setRange(0, maxRecords);
>>                }
>>
>>                List<UploadedContent> entities = new
>> ArrayList<UploadedContent>();
>>                try {
>>                        entities = (List<UploadedContent>)
>> query.execute(d);
>>                        pm.deletePersistentAll(entities);
>>                } catch (Exception e) {
>>                        log.log(Level.SEVERE, e.getMessage(), e);
>>                        throw new DaoException(e);
>>                } finally {
>>                        query.closeAll();
>>                        pm.close();
>>                }
>>                return entities.size();
>>        }
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine" group.
>> To post to this group, send email to google-appengine@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appengine@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to