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.deletePersistentInternal(PersistenceManagerImpl.java:1823)
at
com.sun.jdori.common.PersistenceManagerImpl.deletePersistent(PersistenceManagerImpl.java:739)
at
com.sun.jdori.common.PersistenceManagerWrapper.deletePersistent(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();
}
--
+++ GMX - Mail, Messaging & more http://www.gmx.net +++
Bitte l�cheln! Fotogalerie online mit GMX ohne eigene Homepage!
--
+++ GMX - Mail, Messaging & more http://www.gmx.net +++
Bitte l�cheln! Fotogalerie online mit GMX ohne eigene Homepage!
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]