I have come across a similar error while trying to marshall a collection of strings. It works when a value element is available in the collection mapping. This is needed when the elements in the list are in-built jibx types, in this case String.
For example if you have a collection of account number strings then the mapping will look like <collection name="accountNumbers" get-method="getAccountNumbers" set-method="setAccountNumbers" item-type="java.lang.String" factory="org.jibx.runtime.Utility.arrayListFactory" usage="optional"> <value name="accountNumber" style="element" usage="optional"/> </collection> Hope this helps. regards Varghese Marie-Eve Lussier-Cote wrote: > Hi all, > > I'm using jibx 1.1.5 with hibernate classes. These classes have been > generated by Hibernate Synchronizer tool from our database schema. > java.util.Set<> are used to represent one-to-many relations, which are > collections in the binding file. When I try to marshall a collection (with > my own marshaller), I got a ClassCastException java.lang.String (And I'm not > entered in my marshaller yet ) The same marshaller is used for structure and > works fine. Unmarshaller works fine too. Can anyone please help me ? (I > tried to use a Set factory and got the same error) > > -------error-------------- > Exception in thread "main" java.lang.ClassCastException: java.lang.String > > at > ca.gc.nrcan.mis_nap.data.JiBX_MungeAdapter.JiBX_jibx_genbinding_binding_marshal_1_0() > > at > ca.gc.nrcan.mis_nap.data.base.BaseMdMetadata.JiBX_jibx_genbinding_binding_marshal_1_2(BaseMdMetadata.java) > > at > ca.gc.nrcan.mis_nap.data.MdMetadata.JiBX_jibx_genbinding_binding_marshal_2_2(MdMetadata.java) > > at > ca.gc.nrcan.mis_nap.data.JiBX_jibx_genbinding_bindingMdMetadata_access1.marshal() > > at ca.gc.nrcan.mis_nap.data.MdMetadata.marshal(MdMetadata.java) > > at > org.jibx.runtime.impl.MarshallingContext.marshalRoot(MarshallingContext.java:1044) > > at > org.jibx.runtime.impl.MarshallingContext.marshalDocument(MarshallingContext.java:1114) > > at LireXML.main(LireXML.java:40) > > > ---------classes-------- > public class MdMetadata extends BaseMdMetadata { > > [...] > > } > > public abstract class BaseMdMetadata implements Serializable { > > // primary key > private java.lang.Long id; > > // fields > private java.lang.String fileidentifier; > private java.lang.String language; > > > // collections > private java.util.Set<ca.gc.nrcan.mis_nap.data.Hierarchylevelname> > objHierarchylevelnameSet; > > [...] > > } > > ----------binding---------------------- > > <binding forwards="false" value-style="attribute"> > <mapping class="ca.gc.nrcan.mis_nap.data.MdMetadata" name="MD_Metadata"> > <namespace uri="http://www.isotc211.org/2005/gmd" default="elements" > prefix="gmd"/> > <structure map-as="ca.gc.nrcan.mis_nap.data.base.BaseMdMetadata"/> > </mapping> > > <mapping class="ca.gc.nrcan.mis_nap.data.base.BaseMdMetadata" > abstract="true"> > <namespace uri="http://www.isotc211.org/2005/gmd" default="elements"/> > <value name="id" get-method="getId" set-method="setId" style="attribute" > usage="optional"/> > <structure name="fileIdentifier" get-method="getFileidentifier" > set-method="setFileidentifier" usage="required" type="java.lang.String" > marshaller="ca.gc.nrcan.marshalling.CharacterStringMapper" > unmarshaller="ca.gc.nrcan.marshalling.CharacterStringMapper"/> > <structure name="language" get-method="getLanguage" > set-method="setLanguage" > usage="required" type="java.lang.String" > marshaller="ca.gc.nrcan.marshalling.CharacterStringMapper" > unmarshaller="ca.gc.nrcan.marshalling.CharacterStringMapper"/> > <collection field="objHierarchylevelnameSet" > create-type="java.util.HashSet"> > <structure name="hierarchyLevelName" > type="ca.gc.nrcan.mis_nap.data.Hierarchylevelname" > marshaller="ca.gc.nrcan.marshalling.CharacterStringMapper" > unmarshaller="ca.gc.nrcan.marshalling.CharacterStringMapper"/> > </collection> > </mapping> > > <mapping class="ca.gc.nrcan.mis_nap.data.Hierarchylevelname" > name="hierarchyLevelName"> > <namespace uri="http://www.isotc211.org/2005/gmd" default="elements" > prefix="gmd"/> > <structure map-as="ca.gc.nrcan.mis_nap.data.base.BaseHierarchylevelname"/> > </mapping> > > <mapping class="ca.gc.nrcan.mis_nap.data.base.BaseHierarchylevelname" > abstract="true"> > <namespace uri="http://www.isotc211.org/2005/gmd" default="elements" > prefix="gmd"/> > <value name="id" get-method="getId" set-method="setId" style="attribute" > usage="optional"/> > <value name="hierarchyLevelName" get-method="getHierarchylevelname" > set-method="setHierarchylevelname" > usage="required"/> > </mapping> > </binding> > > -------------xml file (collection section)----------------- > > *** <gmd:hierarchyLevelName xsi:type="gmd:PT_FreeText_PropertyType"> > <gco:CharacterString>021E05 - Sherbrooke</gco:CharacterString> > <gmd:PT_FreeText> > <gmd:textGroup> > <gmd:LocalisedCharacterString > locale="#frFR">Sherbrooke</gmd:LocalisedCharacterString> > </gmd:textGroup> > <gmd:textGroup> > <gmd:LocalisedCharacterString > locale="#anAN">Sherbrooke</gmd:LocalisedCharacterString> > </gmd:textGroup> > </gmd:PT_FreeText> > </gmd:hierarchyLevelName>*** > > <gmd:hierarchyLevelName xsi:type="gmd:PT_FreeText_PropertyType"> > <gco:CharacterString>066P16 - Montreal</gco:CharacterString> > <gmd:PT_FreeText> > <gmd:textGroup> > <gmd:LocalisedCharacterString > locale="#frFR">Montréal</gmd:LocalisedCharacterString> > </gmd:textGroup> > <gmd:textGroup> > <gmd:LocalisedCharacterString > locale="#anAN">Montreal</gmd:LocalisedCharacterString> > </gmd:textGroup> > </gmd:PT_FreeText> > </gmd:hierarchyLevelName> > > My unmarshaller takes the part between *** and convert it to String (it has > to be stored in the one field in the database). It works fine for structure > like : > > <gmd:fileIdentifier xsi:type="gmd:PT_FreeText_PropertyType"> > <gco:CharacterString>SIM-PNA<gco:CharacterString> > <gmd:PT_FreeText> > <gmd:textGroup> > <gmd:LocalisedCharacterString locale="#frFR">Base de données SIM-PNA > de Sherbrooke</gmd:LocalisedCharacterString> > </gmd:textGroup> > <gmd:textGroup> > <gmd:LocalisedCharacterString locale="#anAN">SIM-PNA Database of > Sherbrooke</gmd:LocalisedCharacterString> > </gmd:textGroup> > </gmd:PT_FreeText> > </gmd:fileIdentifier> > > Hope my english is enough clear : ) > > > Thanks ! > Marie-Eve > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > jibx-users mailing list > jibx-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jibx-users > > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ jibx-users mailing list jibx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jibx-users