Hi Steven,

It's only a small typo that's causing you trouble:

it must be primarykey="true" and not primary-key="true" !

There should be some messages in the log from the parsing phase of the repository.

Thomas

Ebersole, Steven wrote:
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]





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



Reply via email to