Thomas,

I assume this means that Version 1 should work too. Is there any chance that you can try to fix this problem before OJB Release 2?

Thanks,
Sebastian

Mahler Thomas wrote:

Seems to be a buf in my code...



-----Original Message-----
From: Sebastian Thomschke [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 27, 2003 9:44 PM
To: [EMAIL PROTECTED]
Subject: OJB - JDO - deletePersistent


The JDO tutorial uses the pm.getObjectById() method to get an instance of a
product to delete it. Shouldn't it be possible to do the same via
pm.newQuery?
In my JDO test project I first tried it using the pm.newQuery() method to
get a user object/record. Retrieving was fine, but when I try to delete it, OJB throws the following exception:
javax.jdo.JDOUserException: Instance of class
sebthom.jdotest.persistenceObjects.User is not
persistent.
at
com.sun.jdori.common.PersistenceManagerImpl.deletePersistentIn
ternal(PersistenceManagerImpl.java:1823)
at
com.sun.jdori.common.PersistenceManagerImpl.deletePersistent(P
ersistenceManagerImpl.java:739)
at
com.sun.jdori.common.PersistenceManagerWrapper.deletePersisten
t(PersistenceManagerWrapper.java:444)
at sebthom.jdotest.Main.run(Main.java:120)
at sebthom.jdotest.Main.main(Main.java:165)
Exception in thread "main"


When I use the pm.getObjectById() method it works fine. What's wrong with
the way using pm.newQuery()?


Thanks in advance.

Regards,
Sebastian

======================================================

// Version 1 using pm.newQuery()
tx = pm.currentTransaction();
tx.begin();
query = pm.newQuery(User.class, "id==" + 10);
result = (Collection) query.execute();
user = (User) result.iterator().next();
if (user == null)
{
 System.out.println("did not find a matching instance...");
 tx.rollback();
}
else
{
 pm.deletePersistent(user);
 tx.commit();
 query.close(result);
}

//Version 2 using pm.getObjectById()
User example = new User();
example.setId(10);
Identity oid = new Identity(example);
User toBeDeleted = (User) pm.getObjectById(oid, false);

tx = pm.currentTransaction();
tx.begin();
pm.deletePersistent(toBeDeleted);
if (toBeDeleted == null)
{
  System.out.println("did not find a matching instance...");
  tx.rollback();
}
else
{
  pm.deletePersistent(toBeDeleted);
  tx.commit();
}







---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to