Thank you Amy for your reply...

On Mon, Jan 30, 2012 at 12:41 AM, Amy Unruh <amyu+gro...@google.com> wrote:

> A pointer to the related Stack Overflow question, where I've provided *an*
> answer, related to needing to fetch child objects before closing the
> PersistenceManager:
>
> http://stackoverflow.com/questions/9049491/org-datanucleus-exceptions-nucleususerexception-object-manager-has-been-closed/
>

I have tried touching everything as follows, but I still get an exception
when I try accessing the data.

  static XZStore getStoreByEmail(String email) {

    PersistenceManager pm = PMF.get().getPersistenceManager();

    try {

      Extent<XZStore> storeExtent = pm.getExtent(XZStore.class);

      for (XZStore store : storeExtent) {

        if (store.getAdmin().getEmail().equals(email)) {

          XZStore detachedStore = pm.detachCopy(store);

          detachedStore.setAdmin(pm.detachCopy(store.getAdmin()));
          detachedStore.setUsers((List<User>)
pm.detachCopyAll((store.getUsers())));
          detachedStore.setInventory((List<Item>)
pm.detachCopyAll(store.getInventory()));
          detachedStore.setReceipts((List<Receipt>)
pm.detachCopyAll(store.getReceipts()));
          List<Sale> detachedSales = new ArrayList<Sale>();
          for (Sale sale : store.getSales()) {
            Sale detachedSale = pm.detachCopy(sale);
            detachedSale.setSaleItems((List<SaleItem>)
pm.detachCopyAll(sale.getSaleItems()));
            detachedSales.add(detachedSale);
          }
          detachedStore.setSales(detachedSales);
          detachedStore.setShipments((List<Shipment>)
pm.detachCopyAll(store.getShipments()));
          detachedStore.setCustomers((List<Customer>)
pm.detachCopyAll(store.getCustomers()));
          detachedStore.setCompany(pm.detachCopy(store.getCompany()));

          storeExtent.closeAll();

          return detachedStore;

        }

      }

      storeExtent.closeAll();

      return null;

    } finally {

      pm.close();

    }

  }



>
> Though, I see that you're not sure whether this is the issue you're
> running into.  You might do a test in which you explicitly fetch the data
> from every field you'll need to later access in the detatched objects,
> while you're still in the open PersistenceManager context, and see if this
> fixes the problem.
>

As you can see I've tried it but it does not fix the problem, unless I also
have to access the simple fields such as String, Data, int, long, double,
etc... which should
have been retrieved automatically I suppose since they are not lists?

Thanks,

JG


>
>
> On Sun, Jan 29, 2012 at 10:52 AM, John Goche 
> <johngoch...@googlemail.com>wrote:
>
>>
>> Hello,
>>
>> If anyone knows how to deal with
>> org.datanucleus.exceptions.NucleusUserException: Object Manager has been
>> closed
>> any help would be greatly appreciated. Here is the code which is throwing
>> the exception:
>>
>>   static void persistStore() {
>>
>>     PersistenceManager pm = PMF.get().getPersistenceManager();
>>     Transaction tx = pm.currentTransaction();
>>     try {
>>       tx.begin();
>>       pm.makePersistent(Data.store);
>>       tx.commit();
>>     } finally {
>>       if (tx.isActive())
>>         tx.rollback();
>>       pm.close();
>>     }
>>
>>   }
>>
>> I don't see anything wrong with the code. Any ideas?
>>
>>
>> John Goche
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine for Java" group.
>> To post to this group, send email to
>> google-appengine-java@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine-java+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine-java?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

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

Reply via email to