I assume it's a bug in OJB, because DMapImpl does not implement interface ManageableCollection. I will try to write a test case for this problem to verify my assumption.
regards, Armin
[EMAIL PROTECTED] wrote:
Probably an other newbie question :) . I try to generate the mapping for a Map attribute. Maybe somme body could advice me and show me where I do some errors in my mapping.
My classes (I put the getter and setter : maybe they could be false) :
public class Cooperative { private String id;
private Map mesInseminateurs;
public Cooperative() { ... mesInseminateurs = new DMapImpl(); }
public Inseminateur getMesInseminateurs(String code) {
return (Inseminateur) mesInseminateurs.get(code); }
public void setMesInseminateurs(String code, Inseminateur inseminateur) { mesInseminateurs.put(code, inseminateur); }
public Map getMesInseminateurs() { return mesInseminateurs; } ... }
public class Inseminateur { private String id;
private String idCoop;
public Inseminateur() { ... mesApplicationsCategorieInseminateur = new DMapImpl(); } ... }
id is the PK and idCoop the FK to generate the Map. So I wrote the next mapping :
<class-descriptor class="com.arsoe.trelaze.coopgen.metier.cooperative.Cooperative" table="CIADATA.COOP">
<field-descriptor id="1"
name="id" column="IDCOOP" jdbc-type="VARCHAR" primarykey="true"/>
...
<collection-descriptor
name="mesInseminateurs"
element-class-ref="com.arsoe.trelaze.coopgen.metier.inseminateur.Inseminateur"
collection-class="org.apache.ojb.odmg.collections.DMapImpl">
<inverse-foreignkey field-ref="idCoop"/-->
</collection-descriptor>
</class-descriptor>
<class-descriptor
class="com.arsoe.trelaze.coopgen.metier.inseminateur.Inseminateur"
table="CIADATA.INS">
<field-descriptor id="1"
name="id" column="IDINS" jdbc-type="VARCHAR" primarykey="true"/>
...
<field-descriptor id="3"
name="idCoop" column="IDCOOP" jdbc-type="VARCHAR"/> </class-descriptor>
What could be the raison of such exception ?
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: Error while iterate ResultSet for query org.apache.ojb.broker.accesslayer.RsQueryObject[query: Query from class com.arsoe.trelaze.coopgen.metier.cooperative.Cooperative where {code=C720}, class descriptor: com.arsoe.trelaze.coopgen.
metier.cooperative.Cooperative]
java.lang.ClassCastException
org.apache.ojb.broker.PersistenceBrokerException: java.lang.ClassCastException
at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)
at org.apache.ojb.broker.core.QueryReferenceBroker.retrieveCollection(Unknown Source)
at org.apache.ojb.broker.core.QueryReferenceBroker.retrieveCollections(Unknown 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.core.PersistenceBrokerImpl.getObjectByQuery(Unknown Source)
at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown Source)
at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown Source)
at com.arsoe.trelaze.socle.dao.odmg.ODMGDataAccessObject.find(ODMGDataAccessObject.java:292)
This error is probably the raison why after there is an
Thank you in advance.
Nicolas,
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
