Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Critical
-
Resolution: Invalid
-
Affects Version/s: 2.2.3
-
Fix Version/s: None
-
Component/s: ORM
-
Security Level: All
-
Environment:Windows 7 x64 / Apache 2.4.2 / MySQL server 5.1.62
Description
I am unable to fire any of the "HasLifecycleCallbacks" when defined on a MappedSuperclass... (neither PreUpdate, PostUpdate,PrePersist, PostPersist and others)
I have even tried to put @ORM\HasLifecycleCallbacks on the child class with onPostRemove() on mapped => not working anymore
It only works when i put @ORM\HasLifecycleCallbacks and onPostRemove() both in child class "MyMappedTask"...
Is this a bug ..?
To reproduce :
<?php
namespace MyProject\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperclass
* @ORM\HasLifecycleCallbacks
*/
class MyMappedTask
{
/**
* @ORM\PreRemove
* @ORM\PostRemove
* @ORM\PreUpdate
* @ORM\PostUpdate
*/
public function onPostRemove()
{
echo "here is never reached !";
}
}
/**
* @ORM\Entity(repositoryClass="MyProject\Repository\MyTaskRepository")
* @ORM\Table()
*/
class MyTask extends MyMappedTask
{
}
Hi Fabio,
Thank you for the test case, it is OK !
I found what the problem was :
I use Symfony2 and i have one bundle with the @MappedSuperclass entity and its callbacks (@HasLifecycleCallbacks), and another bundle with the child class (@Entity/@Table).
In that case, you must register the 2 bundles on the mappings (config.yml) otherwise it fails.
(I only registered the bundle which contains the child class but was not enough for Doctrine to understand...)
I don't know if it is a bug on Symfony2, not well documented in this case...
Thank you for all