Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] Dyn. Weaving, Lazy Collection, Clone Problem

Hi,

I have two entities as follows:

@Entity
public class Foo {
  @Id
  private Long id;

  @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  private final Collection<Bar> bars = new ArrayList<Bar>();
}

@Entity
public class Bar {
  @Transient
private transient final PropertyChangeSupport pcs = new PropertyChangeSupport(this);

  @Id
  private Long id;

  @Basic(fetch = FetchType.LAZY)
  @Lob
  private byte[] data;
}

When calling Foo.getBars() I receive an IndirectList. When accessing elements of that list, the lazy object (here it's only 1 element) is being loaded and instantiated. However I can see during debug that there is some kind of "cloning" going on (registerExistingObject() is being called). In detail the Bar instance is being "cloned" and afterwards original and clone both point at the same PCS instance - PCS has a back-reference to the original Bar instance. But when accessing the list retrieved by getBars() I have access to the clone whose PCS is messed up.

Any ideas what is going wrong? When weaving is turned off everything works fine.

I hope the problem is clear enough (it's 2 am over here).

Thanks in advance,
Oliver



Back to the top