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 -->
Money.java
Description: Binary data
JobType.java
Description: Binary data
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]>
