PostLoad and PostUpdate not called for objects with a bidirectional relationship
--------------------------------------------------------------------------------

                 Key: OPENJPA-984
                 URL: https://issues.apache.org/jira/browse/OPENJPA-984
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 1.2.1, 1.3.0
            Reporter: Simon Droscher


A method marked with @PostLoad or @PostUpdate on an object that is the toMany 
side of a bi-directional relationship does not get called when the other object 
is loaded or updated.

I can confirm that this problem was introduced by the changes done in 
[OPENJPA-744]. Looks like the StateManagerImpl.postLoad() method is not firing 
the event due to the bidirectional field not being flagged as loaded.

An example:

{code}
@Entity
public class Order {
  @OneToMany(cascade = CascadeType.ALL, mappedBy = "order", fetch = 
FetchType.EAGER)
  public List<Shipment> getShipments() {
    return shipments;
  }
}

@Entity
public class Shipment {
  @ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.MERGE, 
CascadeType.REFRESH })
  public Order getOrder() {
    return order;
  }

  @PostLoad
  public void doSomethingAfterLoad() {
    // do something
  }
}
{code}

In the above example the doSomethingAfterLoad() never gets called when you load 
an Order. Without the changes done in [OPENJPA-744] it does.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to