You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Edson Carlos Ericksson Richter <ed...@mgrinformatica.com.br> on 2003/06/18 00:47:20 UTC
M:N && Proxy
Hi!
I've discovered a bug in M:N relationships and proxys.
To give some light about the problem, if I have two classes
class A {
private Integer id;
private String description;
public Integer getId( ) { return id; }
public void setId( Integer newId ) { this.id = newId; }
public String getDescription( ) { return this.description; }
public void setDescription( String newDesc ) { this.description =
newDesc; }
}
class B {
private Integer id;
private List allA;
public Integer getId( ) { return id; }
public void setId( Integer newId ) { this.id = newId; }
public void setAllA( List allA ) { this.allA = allA; }
public void getAllA( ) { return this.allA; }
}
Now, I create a non-decomposed M:N relationship. Then if I delete an
element with
B b = new B();
b.getAllA( ).remove( 0 );
OJB removes the A object from the indirection table AND from A table!!!
Now, if I change to:
class B {
private Integer id;
private List allA = new ArrayList();
public Integer getId( ) { return id; }
public void setId( Integer newId ) { this.id = newId; }
public void setAllA( List allA ) { this.allA.clear(); this.allA.addAll(
allA ); }
public void getAllA( ) { return this.allA; }
}
OJB works as expected. Appear that OJB is not correctly managing
CollectionProxy elements in M:N non-decomposed (I've not tried manual M:N).
Can you confirm this?
Thanks,
Edson Richter
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.490 / Virus Database: 289 - Release Date: 16/6/2003
Re: M:N && Proxy
Posted by Edson Carlos Ericksson Richter <ed...@mgrinformatica.com.br>.
The main change is not
private List allA;
to
private List allA = new ArrayList();
but the change of
public void setAllA( List allA ) { this.allA = allA; }
to
public void setAllA( List allA ) { this.allA.clear();
this.allA.addAll( allA ); }
> depends on the auto-delete settings in the collection-descriptor.
makes no difference. But if I change the setAllA method, then make diff...
I don't understand why... The only response I've found is if it's related to
CollectionProxies...
Edson Richter
----- Original Message -----
From: "Thomas Mahler" <th...@web.de>
To: "OJB Users List" <oj...@db.apache.org>
Sent: Wednesday, June 18, 2003 3:02 AM
Subject: Re: M:N && Proxy
Hi Edson,
Edson Carlos Ericksson Richter wrote:
> Hi!
>
> I've discovered a bug in M:N relationships and proxys.
>
> To give some light about the problem, if I have two classes
>
> class A {
> private Integer id;
> private String description;
> public Integer getId( ) { return id; }
> public void setId( Integer newId ) { this.id = newId; }
> public String getDescription( ) { return this.description; }
> public void setDescription( String newDesc ) { this.description =
> newDesc; }
> }
>
> class B {
> private Integer id;
> private List allA;
> public Integer getId( ) { return id; }
> public void setId( Integer newId ) { this.id = newId; }
> public void setAllA( List allA ) { this.allA = allA; }
> public void getAllA( ) { return this.allA; }
> }
>
> Now, I create a non-decomposed M:N relationship. Then if I delete an
> element with
>
> B b = new B();
> b.getAllA( ).remove( 0 );
>
> OJB removes the A object from the indirection table AND from A table!!!
depends on the auto-delete settings in the collection-descriptor.
> Now, if I change to:
>
> class B {
> private Integer id;
> private List allA = new ArrayList();
> public Integer getId( ) { return id; }
> public void setId( Integer newId ) { this.id = newId; }
> public void setAllA( List allA ) { this.allA.clear(); this.allA.addAll(
> allA ); }
> public void getAllA( ) { return this.allA; }
> }
>
>
> OJB works as expected.
What do you expect? that only entries from the indirection table get
deleted? should be configurable with auto-delete="true|false".
> Appear that OJB is not correctly managing
> CollectionProxy elements in M:N non-decomposed (I've not tried manual
M:N).
what has the change from
private List allA;
to
private List allA = new ArrayList();
to do with proxies?
puzzled,
Thomas
> Can you confirm this?
>
> Thanks,
>
> Edson Richter
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.490 / Virus Database: 289 - Release Date: 16/6/2003
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.490 / Virus Database: 289 - Release Date: 16/6/2003
Re: M:N && Proxy
Posted by Thomas Mahler <th...@web.de>.
Hi Edson,
Edson Carlos Ericksson Richter wrote:
> Hi!
>
> I've discovered a bug in M:N relationships and proxys.
>
> To give some light about the problem, if I have two classes
>
> class A {
> private Integer id;
> private String description;
> public Integer getId( ) { return id; }
> public void setId( Integer newId ) { this.id = newId; }
> public String getDescription( ) { return this.description; }
> public void setDescription( String newDesc ) { this.description =
> newDesc; }
> }
>
> class B {
> private Integer id;
> private List allA;
> public Integer getId( ) { return id; }
> public void setId( Integer newId ) { this.id = newId; }
> public void setAllA( List allA ) { this.allA = allA; }
> public void getAllA( ) { return this.allA; }
> }
>
> Now, I create a non-decomposed M:N relationship. Then if I delete an
> element with
>
> B b = new B();
> b.getAllA( ).remove( 0 );
>
> OJB removes the A object from the indirection table AND from A table!!!
depends on the auto-delete settings in the collection-descriptor.
> Now, if I change to:
>
> class B {
> private Integer id;
> private List allA = new ArrayList();
> public Integer getId( ) { return id; }
> public void setId( Integer newId ) { this.id = newId; }
> public void setAllA( List allA ) { this.allA.clear(); this.allA.addAll(
> allA ); }
> public void getAllA( ) { return this.allA; }
> }
>
>
> OJB works as expected.
What do you expect? that only entries from the indirection table get
deleted? should be configurable with auto-delete="true|false".
> Appear that OJB is not correctly managing
> CollectionProxy elements in M:N non-decomposed (I've not tried manual M:N).
what has the change from
private List allA;
to
private List allA = new ArrayList();
to do with proxies?
puzzled,
Thomas
> Can you confirm this?
>
> Thanks,
>
> Edson Richter
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.490 / Virus Database: 289 - Release Date: 16/6/2003