Hi,
I'm having the same problem except that I have a 1:m relationship.
/**
* @ojb.collection
element-class-ref="com.model.product.ShadowProduct"
* foreignkey="formNo"
* auto-update="false"
* auto-delete="false"
*/
private Collection shadowProducts = new RemovalAwareCollection();
I'm also using db-ojb-1.0.rc6 and even though I explicitly specified
auto-update=false auto-delete=false, the collection is being deleted.
When debugging, I noticed that in the method the method "storeCollections"
in PersistenceBrokerImpl.class, cod.getCascadingStore() returns
"CASCADE_LINK" and not "CASCADE_NONE", hence afterStore is being executed.
if(cod.getCascadingStore() != CollectionDescriptor.CASCADE_NONE)
{
Object referencedObjects =
cod.getPersistentField().get(obj);
if(cod.isMtoNRelation())
{
storeAndLinkMtoN(false, obj, cod, referencedObjects,
insert);
}
else
{
storeAndLinkOneToMany(false, obj, cod,
referencedObjects, insert);
}
// invoke callback on collection
if (referencedObjects instanceof ManageableCollection)
{
((ManageableCollection)
referencedObjects).afterStore(this);
}
}
I also tried to get the latest source code from CVS and built it. But the
problem remains. Any idea?
Thanks
Nga
-----Original Message-----
From: Emmanuel Mascarenas [mailto:[EMAIL PROTECTED]
Sent: Wednesday, 5 May 2004 9:06 AM
To: [EMAIL PROTECTED]
Subject: N:M relations problem/question -> unwanted deletions
Hi Armin,
I'm using db-ojb-1.0.rc6 and I change the collection-class as you write,
but it still deteting the object, I'm also change the auto-update and
auto-delete with every possible value (true,fasle,none)
and this not chage the result.
Object code:
/** @ojb.collection
*
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList
"
* element-class-ref="model.security.Role"
* foreignkey="user_id"
* remote-foreignkey="role_id"
* indirection-table="sc_user_role"
* auto-retrieve="true"
* auto-update="true"
*/
protected Collection roles;
public void removeRole(Role role){
roles.remove(role);
}
repository_user.xml
<collection-descriptor
name="rols"
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList
"
element-class-ref="model.security.Role"
indirection-table="sc_user_role"
auto-retrieve="true"
auto-update="true">
<fk-pointing-to-this-class column="user_id"/>
<fk-pointing-to-element-class column="role_id"/>
</collection-descriptor>
the removal code:
try {
Transaction tx = null;
Implementation odmg = Context.getInstance().getODMG();
tx = odmg.newTransaction();
tx.begin();
tx.lock(aUser,Transaction.WRITE);
aUser.removeRole(aRole);
tx.commit();
}catch (Exception ex) {
ex.printStackTrace();
}
Thanks
Emmanuel
> From: Armin Waibel <[EMAIL PROTECTED]>
> Subject: N:M relations problem/question -> unwanted deletions
> Content-Type: text/plain; charset=us-ascii; format=flowed
>
> Hi Emmanuel,
>
> don't use a removal aware collection class in your
> collection-descriptor. Per default OJB use such a collection to detect
> all removed objects from your 1:n collection.
> So try to set
>
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList
"
> in your collection-descriptor.
>
> regards,
> Armin
>
> Emmanuel Mascarenas wrote:
>
> > I have a simple n:m relation:
> >
> > user *..* rol
> >
> > I brake this with a middle table
> >
> > user 1..* user_rol *..1 rol
> >
> > Everything is fine, the problem is when a delete a rol from the rol
> > user's collection, the rol it self is deleted and I want to keep it.
> >
> > Here es the code on user:
> >
> > /** @ojb.collection
> > * element-class-ref="model.security.Rol"
> > * auto-retrieve="true"
> > * auto-update="true"
> > * foreignkey="user_id"
> > * remote-foreignkey="rol_id"
> > * indirection-table="user_rol"
> > */
> > protected Collection roles;
> >
> > Here es the auto generated code on repository_user.xml
> >
> > <collection-descriptor
> > name="roles"
> > element-class-ref="model.security.Rol"
> > indirection-table="user_rol"
> > auto-retrieve="true"
> > auto-update="true"
> >
> > <fk-pointing-to-this-class column="user_id"/>
> > <fk-pointing-to-element-class column="rol_id"/>
> > </collection-descriptor>
> >
> >
> > Thanks all in advance
> > Emmanuel
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> 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]