add AbstractDoctrineListener annotation to avoid duplicated code