Hi,
my problem is finally resolved by changing the sequence manager in
repository.xml file, ->SequenceManagerNativeImpl,
and suprisingly, even no need to use the method getObjectId can be
displayed the id:
Department bean = new Department();
bean.setName("JDO Development");
pm.currentTransaction().begin();
pm.makePersistent(bean);
pm.currentTransaction().commit();
int i = bean.getId(); // got it here.
Thank you guys very much.
On Wed, 2004-04-14 at 21:45, Pedro Salgado wrote:
> I think that when you make an object persistent, the persistence manager
> automatically sets the objects pk according to the database.
>
> Have you tried printing the department bean id after you committed the
> transaction?
>
> Pedro Salgado
>
> -----Original Message-----
> From: Philippe Guillard [mailto:[EMAIL PROTECTED]
> Sent: terÃa-feira, 13 de Abril de 2004 4:02
> To: ojb-user
> Subject: JDO - getObjectId, how to retrieve the id of identity obj
> afterinsert
>
> Hi,
>
> I wanna create a new data object in datastore without precising the
> primary id, while letting database naming the id autoincremently. But in
> the same time, i need to know the id attributed to this object, so that
> i can reuse it later.
> I wrote the code in an xsp like following, but i
> got an error saying :
> "org.apache.cocoon.ProcessingException: Exception in
> ServerPagesGenerator.generate(): javax.jdo.JDOUserException: No
> transaction in progress."
> (If i only execute the lines before Object oid = pm.getObjectId(bean);
> the object is created successfully in the DB with an id incrementally. )
>
> Any idee? Another solution?
>
> thanks,
>
> Phil
>
> *******
> <?xml version="1.0"?>
> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp">
>
> <xsp:structure> // import class
> <xsp:include>javax.jdo.PersistenceManager</xsp:include>
> <xsp:include>javax.jdo.Transaction</xsp:include>
>
> <xsp:include>org.apache.cocoon.ojb.jdo.components.JdoPMF</xsp:include>
> <xsp:include>javax.jdo.Transaction</xsp:include>
>
> <xsp:include>org.apache.cocoon.ojb.samples.bean.Department</xsp:include>
> </xsp:structure>
>
> <xsp:init-page> // declare
> JdoPMF pmf = null;
> PersistenceManager pm = null;
> PersistenceManager pm2 = null;
> int id;
> </xsp:init-page>
>
> <page>
> <content>
> <xsp:logic>
> try {
> /* Get the PersistenceManager */
> try {
> pmf = (JdoPMF) manager.lookup(JdoPMF.ROLE);
> pm = pmf.getPersistenceManager();
> } catch (ComponentException cme) {
> getLogger().error("Could not look up the
> PersistenceManager", cme);
> }
> pm.currentTransaction().begin();
> Department bean = new Department();
> bean.setName("JDO Development");
> pm.makePersistent(bean); // add obj
> in datastore
> pm.currentTransaction().commit();
>
> Object oid = pm.getObjectId(bean); //
> getObjectId of the identity object
> pm.close();
> pm2 = pmf.getPersistenceManager();
> pm2.currentTransaction().begin();
> Department bean2 = (Department) pm.getObjectById(oid,
> true);
> id = bean2.getId();
>
> </xsp:logic>
> <p> Inserted data: <xsp:expr>id</xsp:expr></p>
> <xsp:logic>
> }
> finally {
> manager.release((Component)pmf);
> }
> </xsp:logic>
> </content>
> </page>
> </xsp:page>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]