I just got 1.0rc1 downloaded and junit-tested against the DB that ships with
the tgz.  All was good.

So now I am trying to map my own classes, but run into the following
problem.

I am simply trying to pull all occurences of a class using the following
code (copied directly from the tutorial 1, with minor changes):

    public TestMappings()
    {
        System.setProperty( Context.PROVIDER_URL, "t3://myserver:7001" );
        System.setProperty( Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory" );

        try
        {
            broker = PersistenceBrokerFactory.defaultPersistenceBroker();
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }

    public static void main( String[] args )
    {
        TestMappings me = new TestMappings();
        me.execute();
    }

    private void execute()
    {
        Query query = new QueryByCriteria( AddressType.class, null );
        try
        {
            java.util.Collection allCountries = broker.getCollectionByQuery(
query );
            java.util.Iterator iter = allCountries.iterator();
            while (iter.hasNext())
            {
                System.out.println(iter.next());
            }
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }

Which throws the following error:


[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: OJB needs at least one
primary key attribute for class objectClass=class
com.vignette.it.apps.server.domain.entities.AddressType,
objectRealClass=null
org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException: OJB
needs at least one primary key attribute for class objectClass=class
com.vignette.it.apps.server.domain.entities.AddressType,
objectRealClass=null
        at org.apache.ojb.broker.Identity.checkForPrimaryKeys(Unknown
Source)
        at org.apache.ojb.broker.Identity.<init>(Unknown Source)
        at
org.apache.ojb.broker.accesslayer.RsIterator.getIdentityFromResultSet(Unknow
n Source)
        at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
ery(Unknown Source)
        at test.TestMappings.execute(TestMappings.java:67)
        at test.TestMappings.main(TestMappings.java:59)
java.util.NoSuchElementException: Could not obtain next object: OJB needs at
least one primary key attribute for class objectClass=class
com.vignette.it.apps.server.domain.entities.AddressType,
objectRealClass=null
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
        at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
ery(Unknown Source)
        at test.TestMappings.execute(TestMappings.java:67)
        at test.TestMappings.main(TestMappings.java:59)



Here is the repository snippet mapping the AddressType entity:
    <class-descriptor
            class="com.vignette.it.apps.server.domain.entities.AddressType"
            table="ADDR_TYPE_LU"
    >
        <field-descriptor
                name="id"
                column="ADDR_TYPE_ID"
                jdbc-type="INTEGER"
                primary-key="true"
                autoincrement="true"
        />

        <field-descriptor
                name="name"
                column="NAME"
                jdbc-type="VARCHAR"
        />

        <field-descriptor
                name="optOrder"
                column="OPT_ORDER"
                jdbc-type="INTEGER"
        />

        <field-descriptor
                name="active"
                column="ACTIVE_FLG"
                jdbc-type="INTEGER"
 
conversion="org.apache.ojb.broker.accesslayer.conversions.Boolean2IntFieldCo
nversion"
        />

        <field-descriptor
                name="createdBy"
                column="CRTD_BY"
                jdbc-type="INTEGER"
        />

        <field-descriptor
                name="createdDate"
                column="CRTD_DT"
                jdbc-type="TIMESTAMP"
 
conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimest
ampFieldConversion"
        />

        <field-descriptor
                name="modifiedBy"
                column="CHGD_BY"
                jdbc-type="INTEGER"
        />

        <field-descriptor
                name="modifiedDate"
                column="CHGD_DT"
                jdbc-type="TIMESTAMP"
 
conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimest
ampFieldConversion"
        />
    </class-descriptor>


What am I doing wrong


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

Reply via email to