I get the error below when trying to save an
object using JDO? I have a Payment class that has a payment element which
is type String and has an enumeration restriction of VISA, CHECK
..
I don't want to have a separate database table for
these, what I want is castor to just write out to the payment table, payment
column the value of the type. IE : VISA, CHECK ..
How can I do this?
TIA
Snippet from xsd file:
<xs:element
name="payment">
<xs:annotation>
<xs:documentation>The type of payment, VISA, MASTERCARD, CHECK, CASH.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="VISA"/>
<xs:enumeration value="MASTERCARD"/>
<xs:enumeration value="CHECK"/>
<xs:enumeration value="CASH"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:annotation>
<xs:documentation>The type of payment, VISA, MASTERCARD, CHECK, CASH.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="VISA"/>
<xs:enumeration value="MASTERCARD"/>
<xs:enumeration value="CHECK"/>
<xs:enumeration value="CASH"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Exception Thrown:
Sep 15, 2004
12:28:37 PM [EXCEP] CastorHelper: getDatabase(): Nested error:
org.exolab.castor.mapping.MappingException: No convertor exists for converting
type java.lang.String to type
com.thehomeconnect.core.data.types.PaymentType
org.exolab.castor.mapping.MappingException: No convertor exists for converting type java.lang.String to type com.thehomeconnect.core.data.types.PaymentType
at org.exolab.castor.jdo.engine.SQLTypes.getConvertor(SQLTypes.java:504)
at org.exolab.castor.jdo.engine.JDOMappingLoader.getTypeInfo(JDOMappingLoader.java:258)
at org.exolab.castor.mapping.loader.MappingLoader.createFieldDesc(MappingLoader.java:680)
at org.exolab.castor.jdo.engine.JDOMappingLoader.createFieldDesc(JDOMappingLoader.java:282)
at org.exolab.castor.mapping.loader.MappingLoader.createFieldDescs(MappingLoader.java:615)
at org.exolab.castor.mapping.loader.MappingLoader.createDescriptor(MappingLoader.java:438)
at org.exolab.castor.jdo.engine.JDOMappingLoader.createDescriptor(JDOMappingLoader.java:144)
at org.exolab.castor.mapping.loader.MappingLoader.loadMapping(MappingLoader.java:289)
at org.exolab.castor.jdo.engine.JDOMappingLoader.loadMapping(JDOMappingLoader.java:333)
at org.exolab.castor.mapping.Mapping.getResolver(Mapping.java:291)
at org.exolab.castor.jdo.engine.DatabaseRegistry.loadDatabase(DatabaseRegistry.java:283)
at org.exolab.castor.jdo.JDO.getDatabase(JDO.java:603)
at com.thehomeconnect.util.CastorHelper.getDatabase(CastorHelper.java:523)
at com.thehomeconnect.util.CastorHelper.create(CastorHelper.java:485)
at com.thehomeconnect.core.AbstractDatabaseItem.create(AbstractDatabaseItem.java:38)
at com.thehomeconnect.core.audit.Auditor.sendAuditMessage(Auditor.java:62)
at com.thehomeconnect.core.audit.Auditor.access$000(Auditor.java:19)
at com.thehomeconnect.core.audit.Auditor$AuditorGeneral.run(Auditor.java:104)
at java.util.TimerThread.mainLoop(Timer.java:432)
at java.util.TimerThread.run(Timer.java:382)
org.exolab.castor.mapping.MappingException: No convertor exists for converting type java.lang.String to type com.thehomeconnect.core.data.types.PaymentType
at org.exolab.castor.jdo.engine.SQLTypes.getConvertor(SQLTypes.java:504)
at org.exolab.castor.jdo.engine.JDOMappingLoader.getTypeInfo(JDOMappingLoader.java:258)
at org.exolab.castor.mapping.loader.MappingLoader.createFieldDesc(MappingLoader.java:680)
at org.exolab.castor.jdo.engine.JDOMappingLoader.createFieldDesc(JDOMappingLoader.java:282)
at org.exolab.castor.mapping.loader.MappingLoader.createFieldDescs(MappingLoader.java:615)
at org.exolab.castor.mapping.loader.MappingLoader.createDescriptor(MappingLoader.java:438)
at org.exolab.castor.jdo.engine.JDOMappingLoader.createDescriptor(JDOMappingLoader.java:144)
at org.exolab.castor.mapping.loader.MappingLoader.loadMapping(MappingLoader.java:289)
at org.exolab.castor.jdo.engine.JDOMappingLoader.loadMapping(JDOMappingLoader.java:333)
at org.exolab.castor.mapping.Mapping.getResolver(Mapping.java:291)
at org.exolab.castor.jdo.engine.DatabaseRegistry.loadDatabase(DatabaseRegistry.java:283)
at org.exolab.castor.jdo.JDO.getDatabase(JDO.java:603)
at com.thehomeconnect.util.CastorHelper.getDatabase(CastorHelper.java:523)
at com.thehomeconnect.util.CastorHelper.create(CastorHelper.java:485)
at com.thehomeconnect.core.AbstractDatabaseItem.create(AbstractDatabaseItem.java:38)
at com.thehomeconnect.core.audit.Auditor.sendAuditMessage(Auditor.java:62)
at com.thehomeconnect.core.audit.Auditor.access$000(Auditor.java:19)
at com.thehomeconnect.core.audit.Auditor$AuditorGeneral.run(Auditor.java:104)
at java.util.TimerThread.mainLoop(Timer.java:432)
at java.util.TimerThread.run(Timer.java:382)
My
Mapping file looks like:
<class name="com.thehomeconnect.core.data.Payment" identity="id"
key-generator="IDENTITY" >
<description>Default mapping for class com.thehomeconnect.core.data.Payment</description>
<map-to table="payment" xml="payment"/>
<field name="id" type="int" required="true">
<bind-xml name="id" node="element"/>
<sql name="id" type="integer"></sql>
</field>
<field name="orderid" type="int" required="true">
<bind-xml name="orderid" node="element"/>
<sql name="orderid" type="integer"></sql>
</field>
<field name="payment"
type="com.thehomeconnect.core.data.types.PaymentType" required="true">
<bind-xml name="payment" node="element"/>
<sql name="payment" type="varchar" ></sql>
</field>
<field name="acctname" type="java.lang.String">
<bind-xml name="acctname" node="element"/>
<sql name="acctname" type="varchar"></sql>
</field>
<field name="acctnumber" type="long">
<bind-xml name="acctnumber" node="element"/>
<sql name="acctnumber" type="integer"></sql>
</field>
<field name="acctexpiry" type="java.util.Date">
<bind-xml name="acctexpiry" node="element"/>
<sql name="acctexpiry" type="timestamp"></sql>
</field>
</class>
<class name="com.thehomeconnect.core.data.types.PaymentType">
<description>Default mapping for class com.thehomeconnect.core.data.types.PaymentType</description>
<map-to xml="paymentType"/>
</class>
<description>Default mapping for class com.thehomeconnect.core.data.Payment</description>
<map-to table="payment" xml="payment"/>
<field name="id" type="int" required="true">
<bind-xml name="id" node="element"/>
<sql name="id" type="integer"></sql>
</field>
<field name="orderid" type="int" required="true">
<bind-xml name="orderid" node="element"/>
<sql name="orderid" type="integer"></sql>
</field>
<field name="payment"
type="com.thehomeconnect.core.data.types.PaymentType" required="true">
<bind-xml name="payment" node="element"/>
<sql name="payment" type="varchar" ></sql>
</field>
<field name="acctname" type="java.lang.String">
<bind-xml name="acctname" node="element"/>
<sql name="acctname" type="varchar"></sql>
</field>
<field name="acctnumber" type="long">
<bind-xml name="acctnumber" node="element"/>
<sql name="acctnumber" type="integer"></sql>
</field>
<field name="acctexpiry" type="java.util.Date">
<bind-xml name="acctexpiry" node="element"/>
<sql name="acctexpiry" type="timestamp"></sql>
</field>
</class>
<class name="com.thehomeconnect.core.data.types.PaymentType">
<description>Default mapping for class com.thehomeconnect.core.data.types.PaymentType</description>
<map-to xml="paymentType"/>
</class>
--ekiM
R&D Hummingbird Core Services
613.548.4355 x1535 | 613.548.7801
R&D Hummingbird Core Services
613.548.4355 x1535 | 613.548.7801
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-user
