Hi all,

yes, I have the default public constructor.
May it be, I missed some settings?
I did:
- the mapping in the Person.jdo (copied to target/classes/JDOTest/)
- the mapping in the repository_jdo.xml (in target/test/ojb/)
- the schema - creation in the hsqldb

The build and enhance of the class is successful.
See more complete source code below.

Thanks for help,
Sebastian

>>>>>>>>>>>>>>>>>>>>>>>>>>> Person.class <<<<<<<<<<<<<<<<<<<<<<<
package JDOTest;

import java.io.Serializable;

public class Person implements Serializable {

        private int id;
        protected String name;

        public Person() {

        }

        public Person(int id, String name) {
                this.id = id;
                this.name = name;
        }

        public int GetId() {
                return this.id;
        }

        public String GetName() {
                return this.name;
        }

        public void SetId(int id) {
                this.id = id;
        }

        public void SetName(String name) {
                this.name = name;
        }

}

>>>>>>>>>>>>>>>>>>>>>>>>>>> TestJdo.class <<<<<<<<<<<<<<<<<<<<<<<

...

public class TestJdo {

        private PersistenceManagerFactory factory;
        private PersistenceManager manager;

        public TestJdo() {

                factory = null;
                manager = null;

                try {
                        factory = new OjbStorePMF();
                        manager = factory.getPersistenceManager();
                } catch(Throwable t) {
                        System.out.println(t.getMessage());
                        t.printStackTrace();
                }

        }

        ...

        private void run() {

                Person p = new Person();

                try     {
                        
PersistenceBrokerFactory.defaultPersistenceBroker().clearCache();
                        this.manager.currentTransaction().begin();
                        Query query = this.manager.newQuery(Person.class);

                        Collection allPerson = (Collection)query.execute();

                        Iterator iter = allPerson.iterator();
                        if(!iter.hasNext()) {
                                System.out.println("No entries found");
                        }

                        while(iter.hasNext()) {
                                System.out.println(iter.next());
                        }

                        manager.currentTransaction().commit();
                } catch(Throwable t) {
                        t.printStackTrace();
                }

                finally {
                        manager.close();
                }

        }

}


-----Urspr�ngliche Nachricht-----
Von: Brian McCallister [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 17. Dezember 2003 18:34
An: OJB Users List
Betreff: Re: JDO - Unable to build object instance


It doesn't outside of JDO at least, I use private no-arg constructors
with OJB all the time.

-Brian


On Wed, 2003-12-17 at 12:18, Gus Heck wrote:
> Mahler Thomas wrote:
>
> >Hi Sebastian,
> >
> >Does your class have a public default constructor?
> >
> >
> >
> >
>  From _Core Java Data Objects_ page 51:
>
> "There is one requirement, however; JDO requires that a
> persistence-capable class have a no-arguments constructor. This
> constructor does not need to be declared public it just needs to be
> accessible to the class itself and to any potential subclasses. If thee
> are no sublcasses it can be declared as private."
>
> Does OJB place a further restriction that it must be public?
>
> -Gus
>
> >
> >
> >>-----Original Message-----
> >>From: Sebastian Muench [mailto:[EMAIL PROTECTED]
> >>Sent: Wednesday, December 17, 2003 1:42 AM
> >>To: OJB Users List; [EMAIL PROTECTED]
> >>Subject: R: JDO - Unable to build object instance
> >>
> >>
> >>Oh, the file I mentioned in my last mail hasn't been attached.
> >>Here is the screenshot:
> >>
> >>[JDO] DEBUG: OjbStoreConnector.begin: connectionReadyForRelease=false
> >>[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: Error
> >>while iterate
> >>ResultSet for query
> >>org.apache.ojb.broker.accesslayer.RsQueryObject[query:
> >>Query from class JDOTest.Person where null, class descriptor:
> >>JDOTest.Person]
> >>Unable to build object instance (MAYBE you don't have a constructor
> >>available):class JDOTest.Person
> >>org.apache.ojb.broker.PersistenceBrokerException: Unable to
> >>build object
> >>instance (MAYBE you don't have a constructor available):class
> >>JDOTest.Person
> >>        at
> >>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWi
> >>thReflection(R
> >>owReaderDefaultImpl.java:239)
> >>        at
> >>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObj
> >>ectFrom(RowRea
> >>derDefaultImpl.java:115)
> >>        at
> >>org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResu
> >>ltSet(RsIterat
> >>or.java:463)
> >>        at
> >>org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:284)
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:147)
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:244)
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:263)
> >>        at
> >>org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollection
> >>ByQuery(Persis
> >>tenceBrokerImpl.java:997)
> >>        at
> >>org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColl
> >>ectionByQuery(
> >>DelegatingPersistenceBroker.java:322)
> >>        at
> >>org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColl
> >>ectionByQuery(
> >>DelegatingPersistenceBroker.java:322)
> >>        at
> >>org.apache.ojb.jdori.sql.OjbExtent.<init>(OjbExtent.java:98)
> >>        at
> >>org.apache.ojb.jdori.sql.OjbStoreManager.getExtent(OjbStoreMan
> >>ager.java:251)
> >>        at
> >>com.sun.jdori.common.PersistenceManagerImpl.getExtent(Unknown
> >>Source)
> >>        at
> >>com.sun.jdori.common.query.QueryImpl.checkCandidates(Unknown
> >>Source)
> >>        at
> >>com.sun.jdori.common.query.QueryImpl.execute(Unknown Source)
> >>        at JDOTest.TestJdo.run(TestJdo.java:52)
> >>        at JDOTest.TestJdo.main(TestJdo.java:39)
> >>Caused by:
> >>org.apache.ojb.broker.metadata.ClassNotPersistenceCapableExcep
> >>tion: (Could
> >>not instantiate JDOTest.Person: Class
> >>org.apache.ojb.broker.util.ConstructorHelper can not access a
> >>member of
> >>class JDOTest.Person with modifiers "public")
> >>        at
> >>org.apache.ojb.broker.util.ConstructorHelper.instantiate(Const
> >>ructorHelper.j
> >>ava:162)
> >>        at
> >>org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWi
> >>thReflection(R
> >>owReaderDefaultImpl.java:235)
> >>        ... 16 more
> >>Caused by: java.lang.IllegalAccessException: Class
> >>org.apache.ojb.broker.util.ConstructorHelper can not access a
> >>member of
> >>class JDOTest.Person with modifiers "public"
> >>        at
> >>sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
> >>        at
> >>java.lang.reflect.Constructor.newInstance(Constructor.java:268)
> >>        at
> >>org.apache.ojb.broker.util.ConstructorHelper.instantiate(Const
> >>ructorHelper.j
> >>ava:158)
> >>        ... 17 more
> >>org.apache.ojb.broker.PersistenceBrokerException:
> >>java.util.NoSuchElementException: Could not obtain next
> >>object: Unable to
> >>build object instance (MAYBE you
> >>don't have a constructor available):class JDOTest.Person
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:251)
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:263)
> >>        at
> >>org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollection
> >>ByQuery(Persis
> >>tenceBrokerImpl.java:997)
> >>        at
> >>org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColl
> >>ectionByQuery(
> >>DelegatingPersistenceBroker.java:322)
> >>        at
> >>org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColl
> >>ectionByQuery(
> >>DelegatingPersistenceBroker.java:322)
> >>        at
> >>org.apache.ojb.jdori.sql.OjbExtent.<init>(OjbExtent.java:98)
> >>        at
> >>org.apache.ojb.jdori.sql.OjbStoreManager.getExtent(OjbStoreMan
> >>ager.java:251)
> >>        at
> >>com.sun.jdori.common.PersistenceManagerImpl.getExtent(Unknown
> >>Source)
> >>        at
> >>com.sun.jdori.common.query.QueryImpl.checkCandidates(Unknown
> >>Source)
> >>        at
> >>com.sun.jdori.common.query.QueryImpl.execute(Unknown Source)
> >>        at JDOTest.TestJdo.run(TestJdo.java:52)
> >>        at JDOTest.TestJdo.main(TestJdo.java:39)
> >>Caused by: java.util.NoSuchElementException: Could not obtain
> >>next object:
> >>Unable to build object instance (MAYBE you don't have a constructor
> >>available):class JDOTest.Person
> >>        at
> >>org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:310)
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:147)
> >>        at
> >>org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionB
> >>yQuery(QueryRe
> >>ferenceBroker.java:244)
> >>        ... 11 more
> >>Exception in thread "main" javax.jdo.JDOUserException: Cannot close
> >>PersistenceManager while transaction is still active.
> >>        at
> >>com.sun.jdori.common.PersistenceManagerImpl.close(Unknown Source)
> >>        at
> >>com.sun.jdori.common.PersistenceManagerImpl.popCurrentWrapper(Unknown
> >>Source)
> >>        at
> >>com.sun.jdori.common.PersistenceManagerWrapper.close(Unknown
> >>Source)
> >>        at JDOTest.TestJdo.run(TestJdo.java:69)
> >>        at JDOTest.TestJdo.main(TestJdo.java:39)
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>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]
>
>



---------------------------------------------------------------------
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]

Reply via email to