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]