Hi,

at first, thank you for help so far. Unfortunately, the error message is
still appearing. I checked the information given by the doc you referred me
to, Gus. The strange thing at all is, that I can make new objects persistent
without problems. But retrieving collections is still the problem. I checked
and doublechecked everything, but don't know where's the problem.

My persistente class is House. I'm testing on the HSQLDB, comming with OJB.
I prepare my user class for enhancing by compiling it as usual, and copy the
class files to my dir target/classes/"<package>"/ and
target/classestest/"<package>"/
As I already wrote, enhancing is successful.

Here some important lines from my repository_jdo.xml, House.jdo, House.java,
etc.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SQL statement for the table in HSQLDB

CREATE TABLE Seb_House (
ID INTEGER NOT NULL PRIMARY KEY,
NAME VARCHAR)



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Corresponding mapping tags in repository_jdo.xml

   <!-- Definitions for dbsii.House -->
   <class-descriptor
          class="dbsii.House"
          table="Seb_House"
   >
      <field-descriptor
         name="id"
         column="ID"
         jdbc-type="INTEGER"
         primarykey="true"
      />
      <field-descriptor
         name="name"
         column="NAME"
         jdbc-type="VARCHAR"
      />
   </class-descriptor>



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
The persistente class file

package dbsii;

import java.io.Serializable;

class House implements Serializable {

        private int id;
        protected String name;

        public House() {
        }

        public House(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;
        }

        public String toString() {
                return "[" + this.id + "] " + this.name;
        }

}



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
The corresponding House.jdo

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_0.dtd";>

<jdo>

 <!--extension vendor-name="ojb" key="dbplatform" value="hsqldb"/>
 <extension vendor-name="ojb" key="dbjdbc-level" value="2.0"/>
 <extension vendor-name="ojb" key="dbdriver" value="org.hsqldb.jdbcDriver"/>
 <extension vendor-name="ojb" key="dbprotocol" value="jdbc"/>
 <extension vendor-name="ojb" key="dbsubprotocol" value="hsqldb"/>
 <extension vendor-name="ojb" key="dbalias" value="../OJB"/>
 <extension vendor-name="ojb" key="dbusername" value="sa"/>
 <extension vendor-name="ojb" key="dbpassword" value=""/-->

 <package name="dbsii">

  <class name="House">
  <extension vendor-name="ojb" key="table" value="Seb_House"/>

  <field name="id">
    <extension vendor-name="ojb" key="column" value="ID"/>
   </field>
   <field name="name">
    <extension vendor-name="ojb" key="column" value="NAME"/>
   </field>
  </class>
 </package>
</jdo>



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
The lines causing the error
(pretty the same as in the jdo tutorial)

manager = factory.getPersistenceManager();

try {

        // JDO does not like old instances...
        PersistenceBrokerFactory.defaultPersistenceBroker().clearCache();

        manager.currentTransaction().begin();
        Query query = manager.newQuery(House.class);

// >>> NEXT LINE CAUSES THE ERROR <<<
        Collection all = (Collection)query.execute();

        // now iterate over the result to print each product
        java.util.Iterator iter = all.iterator();
        if (! iter.hasNext()) {
                System.out.println("No Product entries found!");
        }

        while (iter.hasNext()) {
                House house = (House) iter.next();
                System.out.println(house.toString());
        }

}

...



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
The error message

[JDO] DEBUG: OjbStoreConnector.begin: connectionReadyForRelease=false
org.apache.ojb.broker.PersistenceBrokerException: Unable to build object
instance (MAYBE you don't have a constructor available):class dbsii.House
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(R
owReaderDefaultImpl.java:239)
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowRea
derDefaultImpl.java:115)        at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:428)
        at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:256)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:147)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:244)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:263)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis
tenceBrokerImpl.java:998)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
DelegatingPersistenceBroker.java:322)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
DelegatingPersistenceBroker.java:322)
        at org.apache.ojb.jdori.sql.OjbExtent.<init>(OjbExtent.java:98)
        at
org.apache.ojb.jdori.sql.OjbStoreManager.getExtent(OjbStoreManager.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 dbsii.Frontend.getHouseListings(Frontend.java:148)
        at dbsii.Frontend.run(Frontend.java:68)
        at dbsii.Frontend.main(Frontend.java:40)
Caused by:
org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException: (Could
not instantiate dbsii.House: Class
org.apache.ojb.broker.util.ConstructorHelper can not access a member of
class dbsii.House with modifiers "public")
        at
org.apache.ojb.broker.util.ConstructorHelper.instantiate(ConstructorHelper.j
ava:162)
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(R
owReaderDefaultImpl.java:235)
        ... 17 more
Caused by: java.lang.IllegalAccessException: Class
org.apache.ojb.broker.util.ConstructorHelper can not access
a member of class dbsii.House 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(ConstructorHelper.j
ava:158)
        ... 18 more
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: Unable to build object
instance (MAYBE you don't have a constructor available):class dbsii.House
org.apache.ojb.broker.PersistenceBrokerException: Unable to build object
instance (MAYBE you don't have a constructor available):class dbsii.House
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(R
owReaderDefaultImpl.java:239)
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(RowRea
derDefaultImpl.java:115)        at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:428)
        at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:256)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:147)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:244)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:263)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis
tenceBrokerImpl.java:998)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
DelegatingPersistenceBroker.java:322)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
DelegatingPersistenceBroker.java:322)
        at org.apache.ojb.jdori.sql.OjbExtent.<init>(OjbExtent.java:98)
        at
org.apache.ojb.jdori.sql.OjbStoreManager.getExtent(OjbStoreManager.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 dbsii.Frontend.getHouseListings(Frontend.java:148)
        at dbsii.Frontend.run(Frontend.java:68)
        at dbsii.Frontend.main(Frontend.java:40)
Caused by:
org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException: (Could
not instantiate dbsii.House: Class
org.apache.ojb.broker.util.ConstructorHelper can not access a member of
class dbsii.House with modifiers "public")
        at
org.apache.ojb.broker.util.ConstructorHelper.instantiate(ConstructorHelper.j
ava:162)
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.buildWithReflection(R
owReaderDefaultImpl.java:235)
        ... 17 more
Caused by: java.lang.IllegalAccessException: Class
org.apache.ojb.broker.util.ConstructorHelper can not access
a member of class dbsii.House 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(ConstructorHelper.j
ava:158)
        ... 18 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
dbsii.House
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:251)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:263)
        at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis
tenceBrokerImpl.java:998)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
DelegatingPersistenceBroker.java:322)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
DelegatingPersistenceBroker.java:322)
        at org.apache.ojb.jdori.sql.OjbExtent.<init>(OjbExtent.java:98)
        at
org.apache.ojb.jdori.sql.OjbStoreManager.getExtent(OjbStoreManager.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 dbsii.Frontend.getHouseListings(Frontend.java:148)
        at dbsii.Frontend.run(Frontend.java:68)
        at dbsii.Frontend.main(Frontend.java:40)
Caused by: java.util.NoSuchElementException: Could not obtain next object:
Unable to build object instance (MAYBE you don't have a constructor
available):class dbsii.House
        at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:276)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:147)
        at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryRe
ferenceBroker.java:244)
        ... 12 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 dbsii.Frontend.getHouseListings(Frontend.java:170)
        at dbsii.Frontend.run(Frontend.java:68)
        at dbsii.Frontend.main(Frontend.java:40)





-----Urspr�ngliche Nachricht-----
Von: Gus Heck [mailto:[EMAIL PROTECTED]
Gesendet: Samstag, 20. Dezember 2003 00:17
An: OJB Users List
Betreff: Re: AW: AW: JDO - Unable to build object instance


This may interest you:

http://www.mail-archive.com/[EMAIL PROTECTED]/msg03320.html

HTH,
Gus


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

Reply via email to