Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2317

[UnitOfWork] Entity in identityMap but not present in entityIdentifiers

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: 2.3.2
    • Fix Version/s: None
    • Component/s: ORM
    • Labels:
    • Environment:
      php 5.4.11, MySQL 5.5, ubuntu 12.10

      Description

      I'm using symfony 2.1.8 and sonata/admin-bundle
      I have a quite complex entity mapping.

      • A Competence has many CompetenceAction (superclass)
      • CompetenceActionBuff is a subclass of CompetenceAction and has exactly one buff (selectable in the form by an 'entity' field).

      When i want to edit a Competence, i have the following error message about the Buff entity linked to the CompetenceActionBuff:
      "Entities passed to the choice field must be managed. [...]"
      The exception is raised in Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 412

      I've added some debug code in the EntityManager::contains() method and it shows that my entity is in the entityMap but his oid is not in the keys of entityIdentifiers making the call to UnitOfWork::isInIdentityMap() return false at line 1505.

      When submitting the form, there is no problems. All the entities are correctly created in the database. The exception is thrown only when i want to edit the Competence object. Saying that the Buff object is not managed when it was first loaded from the database... strange, no?

      Finally, i tried to comment the test

      if (!$this->em->contains($entity)))

      in EntityChoiceList::getIdentifierValues() and everything seemed to work properly.

      1. Buff.php
        4 kB
        Rémi Piotaix
      2. Competence.php
        10 kB
        Rémi Piotaix
      3. CompetenceAction.php
        4 kB
        Rémi Piotaix
      4. CompetenceActionBuff.php
        1.0 kB
        Rémi Piotaix
      5. CompetenceActionBuffType.php
        1 kB
        Rémi Piotaix

        Activity

        Rémi Piotaix created issue -
        Rémi Piotaix made changes -
        Field Original Value New Value
        Description First, i'd like to say that i'm a beginner with doctrine, jira and all this stuff and i apologize if i'm doing something wrong. I'm also sorry for my bad english. I'm french and it is really difficult for me :s

        I'm using symfony 2.1.8 and sonata/admin-bundle
        I have a quite complex entity mapping.

        Here is my problem (i've put the entities as attachments):

        - A Competence has many CompetenceAction (superclass)
        - CompetenceActionBuff is a subclass of CompetenceAction and has exactly one buff (selectable in the form by an 'entity' field).

        When i want to create/edit a Competence, i have the following error message about the Buff entity linked to the CompetenceActionBuff:
        "Entities passed to the choice field must be managed. [...]"
        The exception is raised in Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 412

        I've added some debug code in the EntityManager::contains() method and it shows that my entity is in the entityMap but his oid is not in the keys of entityIdentifiers making the call to UnitOfWork::isInIdentityMap() return false at line 1505.

        When submitting the form, there is no problems. All the entities are correctly created in the database. The exception is thrown only when i want to edit the Competence object. Saying that the Buff object is not managed when it was first loaded from the database... strange, no?

        Finally, i tried to comment the test (if (!$this->em->contains($entity))) in EntityChoiceList::getIdentifierValues() and everything seemed to work properly.
        First, i'd like to say that i'm a beginner with doctrine, jira and all this stuff and i apologize if i'm doing something wrong. I'm also sorry for my bad english. I'm french and it is really difficult for me :s

        I'm using symfony 2.1.8 and sonata/admin-bundle
        I have a quite complex entity mapping.

        Here is my problem (i've put the entities as attachments):

        - A Competence has many CompetenceAction (superclass)
        - CompetenceActionBuff is a subclass of CompetenceAction and has exactly one buff (selectable in the form by an 'entity' field).

        When i want to edit a Competence, i have the following error message about the Buff entity linked to the CompetenceActionBuff:
        "Entities passed to the choice field must be managed. [...]"
        The exception is raised in Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 412

        I've added some debug code in the EntityManager::contains() method and it shows that my entity is in the entityMap but his oid is not in the keys of entityIdentifiers making the call to UnitOfWork::isInIdentityMap() return false at line 1505.

        When submitting the form, there is no problems. All the entities are correctly created in the database. The exception is thrown only when i want to edit the Competence object. Saying that the Buff object is not managed when it was first loaded from the database... strange, no?

        Finally, i tried to comment the test (if (!$this->em->contains($entity))) in EntityChoiceList::getIdentifierValues() and everything seemed to work properly.
        Marco Pivetta made changes -
        Priority Blocker [ 1 ] Major [ 3 ]
        Description First, i'd like to say that i'm a beginner with doctrine, jira and all this stuff and i apologize if i'm doing something wrong. I'm also sorry for my bad english. I'm french and it is really difficult for me :s

        I'm using symfony 2.1.8 and sonata/admin-bundle
        I have a quite complex entity mapping.

        Here is my problem (i've put the entities as attachments):

        - A Competence has many CompetenceAction (superclass)
        - CompetenceActionBuff is a subclass of CompetenceAction and has exactly one buff (selectable in the form by an 'entity' field).

        When i want to edit a Competence, i have the following error message about the Buff entity linked to the CompetenceActionBuff:
        "Entities passed to the choice field must be managed. [...]"
        The exception is raised in Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 412

        I've added some debug code in the EntityManager::contains() method and it shows that my entity is in the entityMap but his oid is not in the keys of entityIdentifiers making the call to UnitOfWork::isInIdentityMap() return false at line 1505.

        When submitting the form, there is no problems. All the entities are correctly created in the database. The exception is thrown only when i want to edit the Competence object. Saying that the Buff object is not managed when it was first loaded from the database... strange, no?

        Finally, i tried to comment the test (if (!$this->em->contains($entity))) in EntityChoiceList::getIdentifierValues() and everything seemed to work properly.
        I'm using symfony 2.1.8 and sonata/admin-bundle
        I have a quite complex entity mapping.

         - A Competence has many CompetenceAction (superclass)
         - CompetenceActionBuff is a subclass of CompetenceAction and has exactly one buff (selectable in the form by an 'entity' field).

        When i want to edit a Competence, i have the following error message about the Buff entity linked to the CompetenceActionBuff:
        "Entities passed to the choice field must be managed. [...]"
        The exception is raised in Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 412

        I've added some debug code in the EntityManager::contains() method and it shows that my entity is in the entityMap but his oid is not in the keys of entityIdentifiers making the call to UnitOfWork::isInIdentityMap() return false at line 1505.

        When submitting the form, there is no problems. All the entities are correctly created in the database. The exception is thrown only when i want to edit the Competence object. Saying that the Buff object is not managed when it was first loaded from the database... strange, no?

        Finally, i tried to comment the test
        {code}if (!$this->em->contains($entity))){code} in EntityChoiceList::getIdentifierValues() and everything seemed to work properly.
        Rémi Piotaix made changes -
        Attachment CompetenceActionBuffType.php [ 11414 ]
        Marco Pivetta made changes -
        Status Open [ 1 ] Closed [ 6 ]
        Assignee Benjamin Eberlei [ beberlei ] Marco Pivetta [ ocramius ]
        Resolution Invalid [ 6 ]

          People

          • Assignee:
            Marco Pivetta
            Reporter:
            Rémi Piotaix
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: