Bug #51330
closed
Update Exception with old property mapper
Added by Stefan Froemken about 11 years ago.
Updated over 9 years ago.
Priority:
Won't have this time
Description
Hello Extbase-Team,
there is a problem with the old property mapper in newer TYPO3-Versions. Currently tested in 6.1 and current git version.
You can create a new record in FE, but you can't update the record:
#1249479819: The object of type "TYPO3\Oldmapper\Domain\Model\Person" given to update must be persisted already, but is new.
After debugging I found out that they have a different spl_hash. That's why this error message appears. They differ because of a different isDirty-Property.
Stefan
Files
Git bisect tells me the following:
8bd24e530deea26a7b1cb56018f88aa3a4c4ff9e is the first bad commit
commit 8bd24e530deea26a7b1cb56018f88aa3a4c4ff9e
Author: Thomas Maroschik <tmaroschik@dfau.de>
Date: Mon Apr 15 17:48:35 2013 +0200
[!!!][BUGFIX] Introduce explicit saving of modified domain objects
In conjunction with the new property mapper the persistence layer
saves modified domain objects that failed validation and/or mapping.
This bugfix aligns the behavior of the persistence layer with Flow
and introduces explicit saving of modified domain objects.
Modified objects now need to be passed through their repository
update method in order to be scheduled for saving by the persistence
managers persistAll method.
Fixes: #47251
Releases: 6.1
Change-Id: I2130f96d925d74942af70f92e38d2d0b2ea46f79
Reviewed-on: https://review.typo3.org/19992
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
Reviewed-by: Stefan Froemken
Tested-by: Stefan Froemken
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
btw: the core bisect result
b6c6a43597b1bd840d94a2faa7fae3d88064885f is the first bad commit
commit b6c6a43597b1bd840d94a2faa7fae3d88064885f
Author: TYPO3 Release Team <typo3v4@typo3.org>
Date: Mon Apr 22 20:44:51 2013 +0200
[TASK] Raise submodule pointer
Change-Id: I0fda801a76949927e93197aac53d5d7a59d8bc34
Reviewed-on: https://review.typo3.org/20084
Reviewed-by: TYPO3 Release Team
Tested-by: TYPO3 Release Team
git show:
commit b6c6a43597b1bd840d94a2faa7fae3d88064885f
Author: TYPO3 Release Team <typo3v4@typo3.org>
Date: Mon Apr 22 20:44:51 2013 +0200
[TASK] Raise submodule pointer
Change-Id: I0fda801a76949927e93197aac53d5d7a59d8bc34
Reviewed-on: https://review.typo3.org/20084
Reviewed-by: TYPO3 Release Team
Tested-by: TYPO3 Release Team
diff --git a/typo3/sysext/extbase b/typo3/sysext/extbase
index 856d701..8bd24e5 160000
--- a/typo3/sysext/extbase
+++ b/typo3/sysext/extbase
@@ -1 +1 @@
-Subproject commit 856d701a5a432f6779a23cf5322bc8ccd4812cc0
+Subproject commit 8bd24e530deea26a7b1cb56018f88aa3a4c4ff9e
- Assignee deleted (
Alexander Schnitzler)
I had similar issue. The reason was that I was fetching the object from repository in the initialize action.
Later in the action I call repo->update() on the object provided by property mapper (action argument).
It worked fine in 4.7
I have this problem after updating from 6.0 to 6.2, but even with @dontverifyrequesthash set.
- Project changed from 534 to TYPO3 Core
- Category changed from Extbase: Property to Extbase
- Target version changed from 6.2.0 to next-patchlevel
- TYPO3 Version set to 6.1
- Is Regression set to Yes
- Status changed from New to Rejected
- Priority changed from Should have to Won't have this time
old property mapper is not supported anymore and removed from the Core after 6.2. Use the new one instead.
For those who do not know how to fix it, I will show how I have fixed it.
Old code:
$persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Tx_Extbase_Persistence_Manager');
New code:
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$persistenceManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager');
Thank you so much, Michael Oehlhof!!!
Also available in: Atom
PDF