[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
[eclipselink-users] annotate field or method?
 | 
I have noticed that eclipse link behaves differently depending on if the 
field or the getter method is annotated.
In the 1st chunk of code below, setContact task is never called, but in 
the 2nd one it is called a lot.. is this intended behavior? are their 
any other differences?
basically I have bi-directional relations that I am trying to keep 
updated.. so I figured I could add in something like
if (!contact.getTasklistCollection().contains(this))
{
    contact.getTasklistCollection().add(this);
}
in to the setter, but in the 2nd chunk of code, it causes eclipse link 
to load the TasklistCollection hundreds of times...
I got the idea from
http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption.2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side
--------------------------------------------------------------------------------------------------------------------------------------------
@Entity
@Table(name = "tasklist")
public class Tasklist implements Serializable
{
    ...
    @JoinColumn(name = "contactid", referencedColumnName = "contactid")
    @ManyToOne
    private Contacts contact;
    ...
    public Contacts getContact()
    {
        return contact;
    }
    public void setContact(Contacts contact)
    {
        this.contact = contact;
        System.out.println("setContact task - " + contact);
    }
}
--------------------------------------------------------------------------------------------------------------------------------------------
@Entity
@Table(name = "tasklist")
public class Tasklist implements Serializable
{
    ...
    private Contacts contact;
    ...
    @JoinColumn(name = "contactid", referencedColumnName = "contactid")
    @ManyToOne
    public Contacts getContact()
    {
        return contact;
    }
    public void setContact(Contacts contact)
    {
        this.contact = contact;
        System.out.println("setContact task - " + contact);
    }
}
--------------------------------------------------------------------------------------------------------------------------------------------