openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Droscher (JIRA)" <j...@apache.org>
Subject [jira] Updated: (OPENJPA-984) PostLoad and PostUpdate not called for objects with a bidirectional relationship
Date Wed, 18 Mar 2009 17:19:50 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-984?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Simon Droscher updated OPENJPA-984:
-----------------------------------

    Description: 
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:

@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
  }
}

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


  was:
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.



> 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:
> @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
>   }
> }
> 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.


Mime
View raw message