I am trying to write a small application to start learning OJB.  In two of my
classes I used a Money class/object to encapsulate the amount and currency.  

I found some discussion of the PersistentNestedFieldMaxPerformanceImpl Class
being used to do this, so I set:
 
PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl
in my OJB.properties file.

I also setup a FieldConversion for the Currency Object.  However, when I try to
run a simple PersistenceBroker Query I get errors; saying amoung other things:
"java.lang.NoSuchFieldException: payPerHour".

It seems to me I am probably missing some small step to to inform OJB of the
Money Object, but I can't figure out how to set this up.  I've attatched some
files that might help, including the OJB log output.

Thanks,
-- 
    Robert r. Sanders
    Chief Technologist
    iPOV
    www.ipov.net
    1-334-821-5412

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/
<!-- Please keep user defined mappings in this file only
     to avoid mixing user defined and system mappings. -->   
<!-- Mapping of User defined classes starts here -->

<!-- The mappings for the tutorial classes are placed here to make it
     easier to find them for OJB newbies. 
     Please remove them if you don't need them in your environment. -->

<!-- Definitions for org.apache.ojb.tutorial1.Product -->
   <class-descriptor
   	  class="org.ipov.timesheet.JobType"
   	  table="jobtypes">
   	  
      <field-descriptor id="1"
         name="id"
         column="id"
         jdbc-type="INTEGER"
         primarykey="true"
         autoincrement="true"
      />
      <field-descriptor id="2"
         name="title"
         column="title"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="3"
         name="payPerHour->amount"
         column="moneyValue"
         jdbc-type="BIGINT"
      />
      <field-descriptor id="4"
         name="payPerHour->currency"
         column="moneyCurrency"
         jdbc-type="VARCHAR"
         conversion="org.ipov.timesheet.persit.CurrencyFieldConversion"
      />
   </class-descriptor>

<!-- Mapping of User defined classes ends here -->

Attachment: Money.java
Description: Binary data

Attachment: JobType.java
Description: Binary data

Attachment: CurrencyFieldConversion.java
Description: Binary data

[org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO: Create 
PersistenceBroker instance pool, pool configuration was {whenExhaustedAction=0, 
maxIdle=-1, maxActive=100, maxWait=2000, numTestsPerEvictionRun=10, 
testWhileIdle=false, testOnReturn=false, timeBetweenEvictionRunsMillis=-1, 
minEvictableIdleIimeMillis=600000, testOnBorrow=false}
[org.apache.ojb.broker.util.sequence.SequenceManagerFactory] INFO: Use sequence 
manager class: class org.apache.ojb.broker.util.sequence.SequenceManagerHiLoImpl
Printing out JobTypes authorized for employee : null
[org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO: Create 
connection pool for JdbcDescriptorKey -1012221916
[org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO: Create new 
connection pool for org.apache.ojb.broker.metadata.JdbcConnectionDescriptor,
 used descriptor: JdbcConnectionDescriptor
DBMS:MySQL
DRIVER: com.mysql.jdbc.Driver
PROTOCOL: jdbc
SUBPROTOCOL: mysql
DBALIAS: //localhost:3306/timesheets
USERNAME: *****
PASSWORD: *****
EAGER RELEASE: false
pool configuration was: {whenExhaustedAction=0, maxIdle=-1, maxActive=21, 
maxWait=5000, numTestsPerEvictionRun=10, testWhileIdle=false, testOnReturn=false, 
timeBetweenEvictionRunsMillis=-1, minEvictableIdleIimeMillis=600000, 
testOnBorrow=true}
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: 
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldFactory.createPersistentField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.AttributeDescriptorBase.getPersistentField(Unknown 
Source)
        at 
org.apache.ojb.broker.metadata.ClassDescriptor.getFieldDescriptorByName(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.selectClassDescriptor(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(Unknown Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at org.ipov.timesheet.cli.ListJobTypes.execute(ListJobTypes.java:47)
        at org.ipov.timesheet.cli.CmdLI.main(CmdLI.java:39)
Caused by: org.apache.ojb.broker.metadata.MetadataException: Can't find member 
payPerHour->amount in org.ipov.timesheet.JobType: payPerHour
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.computeField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        ... 13 more
Caused by: java.lang.NoSuchFieldException: payPerHour
        at java.lang.Class.getField0(Class.java:1735)
        at java.lang.Class.getDeclaredField(Class.java:1189)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        ... 16 more
rethrown as org.apache.ojb.broker.metadata.MetadataException: Error creating 
PersistentField: org.ipov.timesheet.JobType, payPerHour->amount
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldFactory.createPersistentField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.AttributeDescriptorBase.getPersistentField(Unknown 
Source)
        at 
org.apache.ojb.broker.metadata.ClassDescriptor.getFieldDescriptorByName(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.selectClassDescriptor(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(Unknown Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at org.ipov.timesheet.cli.ListJobTypes.execute(ListJobTypes.java:47)
        at org.ipov.timesheet.cli.CmdLI.main(CmdLI.java:39)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorError creating PersistentField: 
org.ipov.timesheet.JobType, payPerHour->amount
Impl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        ... 9 more
Caused by: org.apache.ojb.broker.metadata.MetadataException: Can't find member 
payPerHour->amount in org.ipov.timesheet.JobType: payPerHour
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.computeField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        ... 13 more
Caused by: java.lang.NoSuchFieldException: payPerHour
        at java.lang.Class.getField0(Class.java:1735)
        at java.lang.Class.getDeclaredField(Class.java:1189)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        ... 16 more
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldFactory.createPersistentField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.AttributeDescriptorBase.getPersistentField(Unknown 
Source)
        at 
org.apache.ojb.broker.metadata.ClassDescriptor.getFieldDescriptorByName(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.selectClassDescriptor(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(Unknown Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at org.ipov.timesheet.cli.ListJobTypes.execute(ListJobTypes.java:47)
        at org.ipov.timesheet.cli.CmdLI.main(CmdLI.java:39)
Caused by: org.apache.ojb.broker.metadata.MetadataException: Can't find member 
payPerHour->amount in org.ipov.timesheet.JobType: payPerHour
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.computeField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        ... 13 more
Caused by: java.lang.NoSuchFieldException: payPerHour
        at java.lang.Class.getField0(Class.java:1735)
        at java.lang.Class.getDeclaredField(Class.java:1189)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        ... 16 more
rethrown as org.apache.ojb.broker.metadata.MetadataException: Error creating 
PersistentField: org.ipov.timesheet.JobType, payPerHour->amount
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldFactory.createPersistentField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.AttributeDescriptorBase.getPersistentField(Unknown 
Source)
        at 
org.apache.ojb.broker.metadata.ClassDescriptor.getFieldDescriptorByName(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.selectClassDescriptor(Unknown 
Source)
        at 
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectFrom(Unknown Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at org.ipov.timesheet.cli.ListJobTypes.execute(ListJobTypes.java:47)
        at org.ipov.timesheet.cli.CmdLI.main(CmdLI.java:39)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        ... 9 more
Caused by: org.apache.ojb.broker.metadata.MetadataException: Can't find member 
payPerHour->amount in org.ipov.timesheet.JobType: payPerHour
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.computeField(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.<init>(Unknown
 Source)
        ... 13 more
Caused by: java.lang.NoSuchFieldException: payPerHour
        at java.lang.Class.getField0(Class.java:1735)
        at java.lang.Class.getDeclaredField(Class.java:1189)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl.getFieldRecursive(Unknown
 Source)
        ... 16 more
java.util.NoSuchElementException
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at org.ipov.timesheet.cli.ListJobTypes.execute(ListJobTypes.java:47)
        at org.ipov.timesheet.cli.CmdLI.main(CmdLI.java:39)
--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to