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]
