Uploaded image for project: 'Doctrine 2 - ORM'
  1. Doctrine 2 - ORM
  2. DDC-1034

Registered lifecycle callbacks of derived classes have unexpected call sequence

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0
    • Fix Version/s: 2.0.2, 2.1
    • Component/s: ORM
    • Security Level: All
    • Labels:
      None

      Description

      Situation:
      Create an abstract base class (@InheritanceType("JOINED")) and a derived class, both having the annotation @HasLifecycleCallbacks and both having a method with annotation @PostLoad (different method names). The sequence of methods being called when an object is loaded from the database is not as expected.

      Expected output:
      Called Che\Tmp\BaseClass::PostLoadBase
      Called Che\Tmp\DerivedClass::PostLoadDerived
      (base value, derived value)

      Actual output:
      Called Che\Tmp\BaseClass::PostLoadBase
      Called Che\Tmp\DerivedClass::PostLoadDerived
      Called Che\Tmp\BaseClass::PostLoadBase
      (base value)

      Test code:
      See attachment for classes

      // Assume there is an entity manager $em
      // Create object
      $newDerived = new \Che\Tmp\DerivedClass();
      $em->persist($newDerived);

      // Fetch object
      $derived = $em->findById('\Che\Tmp\DerivedClass', 1);
      $derived->echoList();

      Possible problem cause

      ClassMetadataInfo::addLifecycleCallback($callback, $event) method has a note 'If the same callback is registered more than once, the old one will be overridden'. We are not sure whether this is the case.

        Activity

        Hide
        beberlei Benjamin Eberlei added a comment -

        Fixed.

        Show
        beberlei Benjamin Eberlei added a comment - Fixed.

          People

          • Assignee:
            beberlei Benjamin Eberlei
            Reporter:
            bart Bart
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: