Hi everebody. I would like to contribute to the CVS repository but  I've only read 
access.

We've been in problems with M:N relations, a column name mismatched was raised and the 
reason is inside PersistenceBrokerImpl.

The solution for the problem is use criteria.addEqualToField and not 
criteria.addEqualToColumn inside method 'getMtoNQuery'.


private Query getMtoNQuery(Object obj, ClassDescriptor cld, CollectionDescriptor cod)

{

Object[] values = brokerHelper.getKeyValues(cld, obj);

Object[] thisClassFks = cod.getFksToThisClass();

Object[] itemClassFks = cod.getFksToItemClass();

ClassDescriptor refCld = getClassDescriptor(cod.getItemClass());

Criteria criteria = new Criteria();

Query query;

for (int i = 0; i < thisClassFks.length; i++)

{

criteria.addEqualTo(cod.getIndirectionTable() + "." + thisClassFks[i], values[i]);

}

for (int i = 0; i < itemClassFks.length; i++)

{


/*

criteria.addEqualToColumn(

cod.getIndirectionTable() + "." + itemClassFks[i].toString(),

refCld.getPkFields()[i].getAttributeName());*/

criteria.addEqualToField(

cod.getIndirectionTable() + "." + itemClassFks[i].toString(),

refCld.getPkFields()[i].getAttributeName());


}

query = QueryFactory.newQuery(refCld.getClassOfObject(), cod.getIndirectionTable(), 
criteria);

return query;

}

Reply via email to