You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by "Plummer, Greg" <Gr...@LibertyMutual.com> on 2003/08/08 15:19:12 UTC

assertValidPkFields

Hi All,

I'm new to OJB. I'm getting the following stack trace when trying to insert an object. The primary key field in the object has a value of 0, which I assume is valid, but in the PersistenceBrokerImpl.storeToDb method, the pkValues variable contains a null rather than a 0. Any ideas on what I'm doing wrong here? 

Thanks!
Greg Plummer

org.apache.ojb.broker.PersistenceBrokerException: assertValidPkFields failed for Object of type: ojbtests.Client on insert
	at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBrokerImpl.java:1942)
	at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:1889)
	at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:665)
	at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersistenceBroker.java:160)
	at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersistenceBroker.java:160)
	at ojbtests.OjbCreateDb.populateClient(OjbCreateDb.java:50)
	at ojbtests.OjbCreateDb.populateClients(OjbCreateDb.java:39)
	at ojbtests.OjbCreateDb.run(OjbCreateDb.java:31)
	at ojbtests.OjbCreateDb.main(OjbCreateDb.java:27)

Here's the db info:

    <jdbc-connection-descriptor
        jcd-alias="default"
        default-connection="true"
        platform="Hsqldb"
        jdbc-level="2.0"
        driver="org.hsqldb.jdbcDriver"
        protocol="jdbc"
        subprotocol="hsqldb"
        dbalias="C:/My Data/projects/PM Affinity/TestDb/Affinity"
        username="sa"
        password=""
        batch-mode="false"
    >
        <sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl">
            <attribute attribute-name="grabSize" attribute-value="5"/>
        </sequence-manager>
    </jdbc-connection-descriptor>

   <class-descriptor
   	  class="ojbtests.Client"
   	  table="CLIENT"
   >
      <field-descriptor
         name="id"
         column="ID"
         jdbc-type="INTEGER"
         primarykey="true"
         autoincrement="false"
         access="anonymous"
      />
      <field-descriptor
         name="name"
         column="NAME"
         jdbc-type="VARCHAR"
      />
      <collection-descriptor
      	name="clientGroups"
      	element-class-ref="ojbtests.ClientGroup">
      		 <inverse-foreignkey field-ref="clientId" />
      </collection-descriptor>
   </class-descriptor>

   <class-descriptor
   	  class="ojbtests.ClientGroup"
   	  table="CLIENT_GROUP"
   >
      <field-descriptor
         name="id"
         column="ID"
         jdbc-type="INTEGER"
         primarykey="true"
         autoincrement="false"
      />
      <field-descriptor
         name="name"
         column="NAME"
         jdbc-type="VARCHAR"
      />
      <field-descriptor
         name="clientId"
         column="CLIENT_ID"
         jdbc-type="INTEGER"
         access="anonymous"
      />
   </class-descriptor>