<!--
RSS generated by JIRA (5.2.7#850-sha1:b2af0c8dc8537b36121c6a579fabbdf79fc919e5) at Thu Jun 20 04:12:13 UTC 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://www.doctrine-project.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+DDC+AND+status+%3D+Reopened+ORDER+BY+priority+DESC&tempMax=1000&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://www.doctrine-project.org/jira/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Doctrine Project</title>
        <link>http://www.doctrine-project.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+DDC+AND+status+%3D+Reopened+ORDER+BY+priority+DESC</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="13" total="13"/>
                <build-info>
            <version>5.2.7</version>
            <build-number>850</build-number>
            <build-date>21-02-2013</build-date>
        </build-info>
<item>
            <title>[DDC-222] Create unit tests for CLI components</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-222</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description></description>
                <environment></environment>
            <key id="10649">DDC-222</key>
            <summary>Create unit tests for CLI components</summary>
                <type id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/task.png">Task</type>
                                <priority id="2" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/critical.png">Critical</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="guilhermeblanco">Guilherme Blanco</assignee>
                                <reporter username="romanb">Roman S. Borschel</reporter>
                        <labels>
                    </labels>
                <created>Tue, 22 Dec 2009 20:04:28 +0000</created>
                <updated>Sat, 30 Oct 2010 13:36:35 +0000</updated>
                                    <version>2.0-ALPHA3</version>
                                <fixVersion>2.x</fixVersion>
                                <component>ORM</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="13006" author="romanb" created="Wed, 19 May 2010 06:56:56 +0000"  >&lt;p&gt;Whats the status here? Do we have any?&lt;/p&gt;</comment>
                    <comment id="13016" author="guilhermeblanco" created="Wed, 19 May 2010 22:02:17 +0000"  >&lt;p&gt;Since we moved to Symfony Console I don&apos;t think this is needed anymore.&lt;br/&gt;
The purpose of this ticket was actually to test our own CLI support, which was dropped. &lt;/p&gt;

&lt;p&gt;I&apos;m closing the ticket due to this. Reopen if you have any other comment.&lt;/p&gt;</comment>
                    <comment id="13021" author="beberlei" created="Thu, 20 May 2010 05:03:53 +0000"  >&lt;p&gt;I think we do need some basic functional tests of our Commands, they have been subject to many bugs in the past becaues they are not tested.&lt;/p&gt;</comment>
                    <comment id="13373" author="beberlei" created="Sat, 19 Jun 2010 18:30:36 +0000"  >&lt;p&gt;Fixed another fatal error in the command due to missing namespace dependency. We need tests for all the commands, there have been dozens of issues on these things so far.&lt;/p&gt;

&lt;p&gt;This commit shows a simple approach on how testing is easily possible for symfony commands:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/doctrine/doctrine2/commit/51e6681934a7cf4448b85c5670c04045f66c6056&quot; class=&quot;external-link&quot;&gt;http://github.com/doctrine/doctrine2/commit/51e6681934a7cf4448b85c5670c04045f66c6056&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="14079" author="romanb" created="Thu, 26 Aug 2010 07:58:29 +0000"  >&lt;p&gt;Can we expect some more tests for beta4 or is it unlikely that you find the time? Should we move this further back or does someone else want to step in?&lt;/p&gt;</comment>
                </comments>
                <issuelinks>
                        <issuelinktype id="10001">
                <name>Reference</name>
                                                <inwardlinks description="is referenced by">
                            <issuelink>
            <issuekey id="10929">DDC-359</issuekey>
        </issuelink>
                    </inwardlinks>
                            </issuelinktype>
                    </issuelinks>
                <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-1415] EventListener delegate on entity basis</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-1415</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description></description>
                <environment></environment>
            <key id="13080">DDC-1415</key>
            <summary>EventListener delegate on entity basis</summary>
                <type id="2" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/newfeature.png">New Feature</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="beberlei">Benjamin Eberlei</reporter>
                        <labels>
                    </labels>
                <created>Tue, 11 Oct 2011 21:22:28 +0000</created>
                <updated>Tue, 20 Dec 2011 22:22:59 +0000</updated>
                                                    <fixVersion>2.x</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="16970" author="beberlei" created="Mon, 12 Dec 2011 15:46:34 +0000"  >&lt;p&gt;Removed from master, as i dont like the api at all&lt;/p&gt;</comment>
                    <comment id="17077" author="guilhermeblanco" created="Tue, 20 Dec 2011 22:22:59 +0000"  >&lt;p&gt;Updating fix version&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-1924] Let SQLFilters know the query type it is being applied to</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-1924</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;I&apos;m making an access control system and would like to automatically filter all queries based current user, targetEntity type and query type. Query type is relevant as different permissions are needed by the user for SELECT, UPDATE, DELETE and INSERT queries.&lt;/p&gt;

&lt;p&gt;I can access the first two things in my filter easily enough, but I cannot find a way to have the filter know what type of query the filter is being applied to.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13851">DDC-1924</key>
            <summary>Let SQLFilters know the query type it is being applied to</summary>
                <type id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/improvement.png">Improvement</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="shne">Jan Knudsen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 13 Jul 2012 09:23:12 +0000</created>
                <updated>Fri, 13 Jul 2012 10:59:35 +0000</updated>
                                                                    <component>ORM</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="18301" author="beberlei" created="Fri, 13 Jul 2012 09:42:32 +0000"  >&lt;p&gt;The Filter API only makes sense for SELECT clauses. Doctrine itself does not use DQL to do updates internally, so you need to use other mechanisms (EventListener) to prevent this operations if they are not allowed for a user.&lt;/p&gt;</comment>
                    <comment id="18302" author="shne" created="Fri, 13 Jul 2012 09:51:55 +0000"  >&lt;p&gt;But I can make custom DQL to update rows and would like to automatically filter this too.&lt;/p&gt;

&lt;p&gt;e.g. $em-&amp;gt;createQuery(&quot;UPDATE SomeEntity se SET se.field = &quot;updated!&quot;)-&amp;gt;execute();&lt;/p&gt;

&lt;p&gt;The lifecycle events preUpdate etc. are not called when doing custom DQL queries.&lt;/p&gt;

&lt;p&gt;Maybe it is bad practice and discouraged to do updates, inserts and deletes as custom DQL queries, but I would like to ensure that the other people in my organization can&apos;t accidentally bypass the Access Control, even if they make use of such bad practice.&lt;/p&gt;

&lt;p&gt;And if the filter API only makes sense for Select statements, why are filters applied to update/delete/etc. statements too?&lt;/p&gt;</comment>
                    <comment id="18304" author="beberlei" created="Fri, 13 Jul 2012 10:41:38 +0000"  >&lt;p&gt;Well, they are applied to DQL UPDATE/DELETE. But not not UPDATE/DELETE that works through the internals of Doctrine. So yes, you can use it to filter DQL DELETE/UPDATE, but doctrine does not do that internally.&lt;/p&gt;

&lt;p&gt;So you have to have two strategies, a DQL/SQL Filter - and Lifecycle events.&lt;/p&gt;</comment>
                    <comment id="18305" author="shne" created="Fri, 13 Jul 2012 10:59:19 +0000"  >&lt;p&gt;Which is fine by me. I already implemented the checks using lifecycle events before opening this issue. The access control is automatically handled when using the entitymanager and not custom DQL.&lt;/p&gt;

&lt;p&gt;Now I would also like to filter the custom DQL, but currently I can&apos;t, because as originally stated, the filter needs to know which type of query it is being applied to.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-1698] Inconsistent proxy file name &amp; namespace result in __PHP_Incomplete_Class when unserializing entities</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-1698</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;Starting with Doctrine 2.2, the Proxy classes have inconsistent naming with their file name, which raises problems with class autoloading.&lt;br/&gt;
For example, a class named &lt;b&gt;Application\Model\User&lt;/b&gt; creates the following proxy class:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Application\Proxy\__CG__\Application\Model\User
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This class is located in the following file:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Application/Proxy/__CG__ApplicationModelUser.php
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But whe we serialize such an entity, then unserialize it in another session, the framework autoloader expects the class to be located in:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Application/Proxy/__CG__/Application/Model/User.php
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But it is not.&lt;br/&gt;
As a result, a __PHP_Incomplete_Class is created instead of the expected proxy class.&lt;/p&gt;

&lt;p&gt;I&apos;m not sure whether this is an intended behavior, but I would assume this is a bug.&lt;/p&gt;</description>
                <environment>Irrelevant</environment>
            <key id="13521">DDC-1698</key>
            <summary>Inconsistent proxy file name &amp; namespace result in __PHP_Incomplete_Class when unserializing entities</summary>
                <type id="6" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/documentation.png">Documentation</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="benjamin">Benjamin Morel</reporter>
                        <labels>
                    </labels>
                <created>Tue, 13 Mar 2012 00:11:42 +0000</created>
                <updated>Sun, 6 Jan 2013 13:18:41 +0000</updated>
                                    <version>2.2</version>
                <version>2.2.1</version>
                                <fixVersion>2.2.2</fixVersion>
                                <component>ORM</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="17561" author="benjamin" created="Tue, 13 Mar 2012 16:46:38 +0000"  >&lt;p&gt;It looks like there is an even broader problem with the new _&lt;em&gt;CG&lt;/em&gt;_ prefix; the PSR-0 standard for autoloading states that the underscores should be handled this way:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;\namespace\package\Class_Name =&amp;gt; {...}/namespace/package/Class/Name.php
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Which means that in the above example, it could even expect the file to be located in:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Application/Proxy///CG///Application/Model/User.php
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;... which is far away from the actual location.&lt;br/&gt;
Upgrade to 2.2 broke this code, for us.&lt;/p&gt;</comment>
                    <comment id="17565" author="beberlei" created="Wed, 14 Mar 2012 18:30:24 +0000"  >&lt;p&gt;Proxy classes do not follow PSR-0. For the case unserializing objects we should provide an extra autoloader i guess.&lt;/p&gt;

&lt;p&gt;See here how symfony does it &lt;a href=&quot;https://github.com/doctrine/DoctrineBundle/blob/master/DoctrineBundle.php#L57&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/DoctrineBundle/blob/master/DoctrineBundle.php#L57&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="17566" author="beberlei" created="Wed, 14 Mar 2012 19:12:07 +0000"  >&lt;p&gt;See &lt;a href=&quot;https://github.com/doctrine/doctrine2/commit/9b4d60897dfc7e9b165712428539e694ec596c80&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/doctrine2/commit/9b4d60897dfc7e9b165712428539e694ec596c80&lt;/a&gt; and &lt;a href=&quot;https://github.com/doctrine/orm-documentation/commit/01381fae1ff3d4944086c7cfe46721925bf6ca15&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/orm-documentation/commit/01381fae1ff3d4944086c7cfe46721925bf6ca15&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="17589" author="benjamin" created="Wed, 14 Mar 2012 22:36:59 +0000"  >&lt;p&gt;Thanks for the quick fix, Benjamin.&lt;br/&gt;
However, I have to admit that I&apos;m not fully happy with the fix, as we (and probably many others) are not using the Doctrine autoloader.&lt;br/&gt;
I supposed that the purpose of PSR-0 was precisely not to be tied to a particular autoloader implementation, and this benefit is lost with this version of Doctrine.&lt;/p&gt;

&lt;p&gt;You mentioned in the doc that the proxies are not PSR-0 compliant &quot;for implementation reasons&quot;; as this was working fine before 2.2, could you please explain what requirement prevents Doctrine from keeping the previous naming convention?&lt;/p&gt;</comment>
                    <comment id="17671" author="beberlei" created="Thu, 29 Mar 2012 09:56:11 +0000"  >&lt;p&gt;In 2.1 the proxies are not PSR-0 compatible themselves, however their class naming is simpler.&lt;/p&gt;

&lt;p&gt;In 2.2 we changed proxy names so that you can derive the original name of the proxy by searching for the _&lt;em&gt;CG&lt;/em&gt;_ flag. This flag obviously contains the __ chars that some PSR autoloaders detect as directory seperators. I agree this is an unfortunate decision, but it was done this way.&lt;/p&gt;

&lt;p&gt;I do think however that we can automatically register the proxy atuoloader (if not yet done)  in EntityManager#create(). This would hide this fact from developers automatically.&lt;/p&gt;</comment>
                    <comment id="18898" author="benjamin" created="Mon, 29 Oct 2012 21:37:00 +0000"  >&lt;p&gt;@Benjamin Eberlei&lt;br/&gt;
In 2.3 we still have to manually call Autoloader::register() before unserializing entities that may contain proxies.&lt;br/&gt;
So EntityManager::create() still doesn&apos;t register it. Is there a plan to add this feature?&lt;/p&gt;</comment>
                    <comment id="19231" author="beberlei" created="Sun, 6 Jan 2013 10:10:22 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=benjamin&quot; class=&quot;user-hover&quot; rel=&quot;benjamin&quot;&gt;Benjamin Morel&lt;/a&gt; Not at the moment, seems too dangerous for me since it might produce race conditions. This should really be done in the bootstrap of the system.&lt;/p&gt;

&lt;p&gt;We need to document this though.&lt;/p&gt;</comment>
                    <comment id="19234" author="benjamin" created="Sun, 6 Jan 2013 13:18:41 +0000"  >&lt;p&gt;Ok, thanks for your answer!&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-2210] PHP warning in ProxyFactory when renaming proxy file</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-2210</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;Getting a PHP Warning: &lt;/p&gt;

&lt;p&gt;&lt;tt&gt;rename(**&lt;b&gt;/models/Proxies&amp;#95;&lt;em&gt;CG&lt;/em&gt;&lt;em&gt;AF_Model_Component_Group.php.50d2dd2c079bb9.35271255,&lt;/b&gt;**/models/Proxies&amp;#95;_CG&lt;/em&gt;_AF_Model_Component_Group.php):&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;in &lt;tt&gt;ProxyFactory&lt;/tt&gt; line 194.&lt;/p&gt;

&lt;p&gt;I haven&apos;t more information in the warning.&lt;/p&gt;

&lt;p&gt;This is the moment when the ProxyFactory writes the proxy to a temporary file and then tries to rename the temp file to the correct file.&lt;/p&gt;

&lt;p&gt;This warning appears randomly, but mostly on pages with lots of concurrent AJAX requests. I guess this happens because several requests try to write the proxy file at the same time. I get this warning but the app works fine.&lt;/p&gt;

&lt;p&gt;This happens in dev environment, on a Windows machine.&lt;/p&gt;


&lt;p&gt;I don&apos;t know why rename generates a warning, it should just return false... The &lt;a href=&quot;http://fr2.php.net/manual/en/function.rename.php&quot; class=&quot;external-link&quot;&gt;doc&lt;/a&gt; doesn&apos;t say anything about warnings (except for long file names, but I checked even with the full path this is around 135 characters, not 255).&lt;/p&gt;</description>
                <environment>Windows</environment>
            <key id="14329">DDC-2210</key>
            <summary>PHP warning in ProxyFactory when renaming proxy file</summary>
                <type id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/improvement.png">Improvement</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="ocramius">Marco Pivetta</assignee>
                                <reporter username="mnapoli">Matthieu Napoli</reporter>
                        <labels>
                    </labels>
                <created>Thu, 20 Dec 2012 10:02:50 +0000</created>
                <updated>Thu, 28 Mar 2013 15:51:48 +0000</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="19171" author="beberlei" created="Sat, 22 Dec 2012 12:04:44 +0000"  >&lt;p&gt;Thats why you shouldn&apos;t generate proxies at runtime. The problem happens on windows, because the atomic rename operation doesn&apos;t work as perfectly there as on linux.&lt;/p&gt;

&lt;p&gt;We cannot fix this in Doctrine.&lt;/p&gt;</comment>
                    <comment id="19180" author="mnapoli" created="Mon, 24 Dec 2012 10:38:46 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=beberlei&quot; class=&quot;user-hover&quot; rel=&quot;beberlei&quot;&gt;Benjamin Eberlei&lt;/a&gt; What do you mean &quot;you shouldn&apos;t generate proxies at runtime&quot;? I&apos;m not in production, this is in dev. And I&apos;m using the default configuration.&lt;/p&gt;

&lt;p&gt;What I don&apos;t understand is why will Doctrine regenerate proxies on every request? The warning is reproductible, and even when no PHP entity has been touched.&lt;/p&gt;</comment>
                    <comment id="19183" author="mnapoli" created="Thu, 27 Dec 2012 13:44:22 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=beberlei&quot; class=&quot;user-hover&quot; rel=&quot;beberlei&quot;&gt;Benjamin Eberlei&lt;/a&gt; To simplify my previous message (I don&apos;t want to bury you under questions) I&apos;ll sum it up like that:&lt;/p&gt;

&lt;p&gt;What can I do?&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;</comment>
                    <comment id="19772" author="mnapoli" created="Thu, 28 Feb 2013 13:03:37 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=beberlei&quot; class=&quot;user-hover&quot; rel=&quot;beberlei&quot;&gt;Benjamin Eberlei&lt;/a&gt; ping: what can be done?&lt;/p&gt;

&lt;p&gt;Can we suppress the error with &lt;tt&gt;@rename($tmpFileName, $fileName);&lt;/tt&gt; ?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Proxy/ProxyGenerator.php#L287&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Proxy/ProxyGenerator.php#L287&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can make a PR if you think that&apos;s a valid solution.&lt;/p&gt;</comment>
                    <comment id="19773" author="ocramius" created="Thu, 28 Feb 2013 13:06:43 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=matthieu&quot; class=&quot;user-hover&quot; rel=&quot;matthieu&quot;&gt;Matthieu Napoli&lt;/a&gt; no, if you have warnings, please disable them via ini setting. With error suppression there, we may have further problems identifying more serious issues.&lt;/p&gt;

&lt;p&gt;About proxy generation: that happens EVERY time in dev environments. Generate them once and disable it afterwards.&lt;/p&gt;</comment>
                    <comment id="19774" author="mnapoli" created="Thu, 28 Feb 2013 13:30:13 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=ocramius&quot; class=&quot;user-hover&quot; rel=&quot;ocramius&quot;&gt;Marco Pivetta&lt;/a&gt; OK I can disable the auto generation then (I&apos;ll have to remember to regenerate them when I edit the model).&lt;/p&gt;

&lt;p&gt;Thanks for the feedback&lt;/p&gt;

&lt;p&gt;Is that possible to make those proxies generate only if the entity file has been modified since the last generation? (only asking if can and should be done, I can look for implementing it myself if that&apos;s the case)&lt;/p&gt;</comment>
                    <comment id="19775" author="ocramius" created="Thu, 28 Feb 2013 13:33:19 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=mnapoli&quot; class=&quot;user-hover&quot; rel=&quot;mnapoli&quot;&gt;Matthieu Napoli&lt;/a&gt; that would be very obnoxious when changing entities often. I wouldn&apos;t do that (generating only if not already available)&lt;/p&gt;</comment>
                    <comment id="19776" author="mnapoli" created="Thu, 28 Feb 2013 13:57:38 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=ocramius&quot; class=&quot;user-hover&quot; rel=&quot;ocramius&quot;&gt;Marco Pivetta&lt;/a&gt; Yes but for now they are regenerated at every request when in dev mode (at least with the default configuration &lt;a href=&quot;http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/configuration.html#obtaining-an-entitymanager&quot; class=&quot;external-link&quot;&gt;http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/configuration.html#obtaining-an-entitymanager&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Which one is worse: generating every proxy class at every request, or generate only those which changed (in dev environment of course, not prod)?&lt;/p&gt;

&lt;p&gt;If neither of these options are good (i.e. auto generation should be disabled), I don&apos;t understand why the docs say to enable auto generation when in dev environment.&lt;/p&gt;</comment>
                    <comment id="19777" author="ocramius" created="Thu, 28 Feb 2013 14:27:35 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=mnapoli&quot; class=&quot;user-hover&quot; rel=&quot;mnapoli&quot;&gt;Matthieu Napoli&lt;/a&gt; that&apos;s because in dev environments you shouldn&apos;t care about that one exception (usually happens when you got concurrent requests). &lt;/p&gt;

&lt;p&gt;It is worse to generate only on changes: that&apos;s a lot of additional checks, variables to keep in memory and additional logic that is not needed.&lt;/p&gt;

&lt;p&gt;Let&apos;s keep it as it is (generating at each request) for dev environments: works fine &lt;img class=&quot;emoticon&quot; src=&quot;http://www.doctrine-project.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Another (eventual) solution for dev environments would be not to write the proxy file, but to eval it.&lt;/p&gt;</comment>
                    <comment id="19782" author="mnapoli" created="Thu, 28 Feb 2013 15:19:31 +0000"  >&lt;p&gt;eval it would be a good solution IMO, no more &quot;woops the directory is not writable&quot; and it&apos;s more neutral for the user filesystem (but not as easy to debug). But OK, I see what you mean, it works let&apos;s keep it that way.&lt;/p&gt;

&lt;p&gt;Actually the problem on my setup is that PHP errors are turned into exceptions, so on an (poorly designed) AJAX treeview (lots of nodes to load =&amp;gt; lots of requests), I end up with some nodes not loaded because of the exception. And it feels weird to either silently log all PHP warnings or silently ignore the specific warning for the rename.&lt;/p&gt;</comment>
                    <comment id="19783" author="ocramius" created="Thu, 28 Feb 2013 15:26:37 +0000"  >&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/jira/secure/ViewProfile.jspa?name=mnapoli&quot; class=&quot;user-hover&quot; rel=&quot;mnapoli&quot;&gt;Matthieu Napoli&lt;/a&gt; I&apos;d go with `eval` then. Needs refactoring of the abstract proxy factory and of the proxy generator (proxy generator should no longer write files).&lt;/p&gt;</comment>
                    <comment id="19784" author="ocramius" created="Thu, 28 Feb 2013 15:28:30 +0000"  >&lt;p&gt;Re-opening: the proxy factory could directly `eval()` the produced proxy code. The ProxyGenerator should no longer write the generated files to disk automatically.&lt;/p&gt;</comment>
                    <comment id="19901" author="mnapoli" created="Thu, 28 Mar 2013 15:51:48 +0000"  >&lt;p&gt;I&apos;ve opened a PR: &lt;a href=&quot;https://github.com/doctrine/common/pull/269&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/common/pull/269&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-2405] Changing strategy generates bad query.</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-2405</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;For (unit, acceptance, functional) testing purpose I need to change the strategy of my GameStuff Entity class.&lt;/p&gt;

&lt;p&gt;In previous version is was using php instruction below, but since doctrine orm 2.3, it doesn&apos;t work anymore.&lt;/p&gt;

&lt;p&gt;$orm-&amp;gt;getClassMetaData(&apos;Entities\GameStuff&apos;)-&amp;gt;setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE);&lt;/p&gt;

&lt;p&gt;will trigger:&lt;/p&gt;

&lt;p&gt;Doctrine\DBAL\DBALException: An exception occurred while executing &apos;INSERT INTO vbank_accounts (game_id, updated_at, created_at) VALUES (?, ?, ?)&apos; with params &lt;/p&gt;
{&quot;1&quot;:1000010, &quot;2&quot;:0,&quot;3&quot;:&quot;2013-04-19 17:16:05&quot;,&quot;4&quot;:&quot;2013-04-19 17:16:05&quot;}
&lt;p&gt;:&lt;/p&gt;

&lt;p&gt;SQLSTATE&lt;span class=&quot;error&quot;&gt;&amp;#91;HY093&amp;#93;&lt;/span&gt;: Invalid parameter number: number of bound variables does not match number of tokens&lt;/p&gt;</description>
                <environment></environment>
            <key id="14790">DDC-2405</key>
            <summary>Changing strategy generates bad query.</summary>
                <type id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/bug.png">Bug</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="gedingun">Van Rotemberg</reporter>
                        <labels>
                    </labels>
                <created>Fri, 19 Apr 2013 15:33:18 +0000</created>
                <updated>Sun, 21 Apr 2013 14:50:37 +0000</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="20070" author="beberlei" created="Sat, 20 Apr 2013 07:46:22 +0000"  >&lt;p&gt;The problem is that changing ClassMetadata after generating it from the cache is not really supported and depends on the Internal State of other classes. Have you tried creating a completly new EntityManager and then directly setting this? It could be that the SQL for the entity was already generated inside Doctrine, with the ID Generator information at IDENTITY_AUTO.&lt;/p&gt;</comment>
                    <comment id="20079" author="gedingun" created="Sun, 21 Apr 2013 11:29:49 +0000"  >&lt;p&gt;&amp;gt; The problem is that changing ClassMetadata after generating it from the cache is not really supported&lt;/p&gt;

&lt;p&gt;Yeah, it is a problem indeed, why set ticket status to resolved ?&lt;br/&gt;
Do you think it&apos;s normal to have a public method that trigger a fatal error ?&lt;/p&gt;

&lt;p&gt;Please fix it or put setIdGeneratorType as private, or AT LEAST add a context exception ...&lt;/p&gt;</comment>
                    <comment id="20080" author="ocramius" created="Sun, 21 Apr 2013 11:49:12 +0000"  >&lt;p&gt;Almost every interaction with metadata outside the `loadClassMetadata` event will cause unexpected problems. I don&apos;t think throwing an exception there helps in any way.&lt;/p&gt;</comment>
                    <comment id="20082" author="gedingun" created="Sun, 21 Apr 2013 14:49:26 +0000"  >&lt;p&gt;@marco pivetta&lt;/p&gt;

&lt;p&gt;The generation of the actual exception comes from DBALException on the query excetion and point a bad generated query (Invalid parameter number),&lt;br/&gt;
when the problem comes from setting ClassMetada, and concerns a problem of cache generated after loadClassMetadata.&lt;/p&gt;

&lt;p&gt;Adding an exception is just the fast way pointing where the problem comes from and that &quot;setting metadata after loadMetadata is not supported anymore&quot;. (It will spare developper&apos;s time that used to set metadata, but also help future contribution)&lt;/p&gt;

&lt;p&gt;&amp;gt; Please fix it or put setIdGeneratorType as private, or AT LEAST add a context exception ...&lt;br/&gt;
Note: BTW, my favorite solution would be to fix it (re-generate cache, or edit cache, or disable cache or whatever)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-2052] Custom tree walkers are not allowed to add new components to the query</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-2052</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;Custom tree walkers have freedom in modifying the AST but when you try to add a new query component (i.e. new join in walkSelectStatement() ) to the AST then the SqlWalker throws an exception because it does not has the new component in its _queryComponents array. I see two possible ways to resolve this:&lt;br/&gt;
1. Modify the Parser class in order to allow tree walkers to modify queryComponents and pass changed queryComponents to the SqlWalker&lt;br/&gt;
2. Improve SqlWalker so it can extract and prepare needed information about queryComponent based on AST when it does not have them.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14085">DDC-2052</key>
            <summary>Custom tree walkers are not allowed to add new components to the query</summary>
                <type id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/improvement.png">Improvement</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="chives">&#321;ukasz Cybula</reporter>
                        <labels>
                        <label>dql</label>
                    </labels>
                <created>Tue, 2 Oct 2012 13:30:45 +0000</created>
                <updated>Tue, 14 May 2013 18:18:10 +0000</updated>
                                    <version>2.3</version>
                                <fixVersion>2.4</fixVersion>
                                <component>DQL</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="18789" author="beberlei" created="Sat, 6 Oct 2012 09:07:58 +0000"  >&lt;p&gt;Ok this is much more complicated to allow then i thought. The problem is that the QueryComponents are passed by value, as an array, not by reference. That prevents changing them because this change wouldn&apos;t be visible in the output walker.&lt;/p&gt;

&lt;p&gt;I can add a method to allow this in the OutputWalker for now, but generally this requires a bigger refactoring on the Query Components.&lt;/p&gt;</comment>
                    <comment id="18790" author="beberlei" created="Sat, 6 Oct 2012 09:15:39 +0000"  >&lt;p&gt;Added setQueryComponent() in SQL Walker to allow modification in output walker.&lt;/p&gt;</comment>
                    <comment id="18805" author="chives" created="Mon, 8 Oct 2012 10:47:08 +0000"  >&lt;p&gt;I&apos;m afraid that this doesn&apos;t solve the initial problem at all. I&apos;ll try to describe it in more details to show what I mean. Suppose we have two doctrine extensions each of which contain its own tree walker. Each of these tree walkers need to modify AST and add new component to it (joined with some component already existing in the query). The first problem is that each tree walker has its own queryComponents array which is not passed between them, although they not necessary need to use queryComponents - they could use only AST. The second, bigger problem is that the Parser class does not know anything about modifications of queryComponents in tree walkers and cannot pass modified version to the OutputWalker. The goal of submitting this issue was to allow adding new components to the query in tree walkers which is not achievable by your fix. I think it may be the first step in the right direction. Maybe TreeWalkerAdapter should have public method getQueryComponents() which would be used by the Parser to pass modified queryComponents between different tree walkers and finally to the OutputWalker ? This would not break backward compatibility and solve this issue. What do you think about it?&lt;/p&gt;</comment>
                    <comment id="18806" author="chives" created="Mon, 8 Oct 2012 13:43:37 +0000"  >&lt;p&gt;I&apos;ve tried to implement the solution mentioned in previous comment but it&apos;s also not so clean and easy as I thought. Each tree walker (including TreeWalkerChain) would have to implement getQueryComponents() and setQueryComponent($alias, array $component) methods. The same with SqlWalker, so the TreeWalker interface should have these methods, which would break BC in some way (walkers that do not inherit from SqlWalker or TreeWalkerAdapter will fail to compile). So maybe my first solution (PR #464) is not so bad for now? In the future queryComponents could be replaced by a special object or could be passed by a reference to allow modifications.&lt;/p&gt;</comment>
                    <comment id="20247" author="beberlei" created="Thu, 9 May 2013 15:32:15 +0000"  >&lt;p&gt;Marked as improvement as its not a bug.&lt;/p&gt;

&lt;p&gt;A solution might probably implement an object holding all the QueryComponent, implementing ArrayAccess. So that way the state can be shared.&lt;/p&gt;</comment>
                    <comment id="20379" author="ocramius" created="Tue, 14 May 2013 18:02:22 +0000"  >&lt;p&gt;Just hit this while developing an ast walker... Will look into it too since I need it more than soon.&lt;/p&gt;</comment>
                    <comment id="20380" author="ocramius" created="Tue, 14 May 2013 18:17:26 +0000"  >&lt;p&gt;As a VERY UGLY workaround, I used a static variable and a custom sql walker in combination with my AST walker.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;

namespace Comcom\Versioning\ORM\Query;


use Doctrine\ORM\Query\SqlWalker;

class WorkaroundSqlWalker &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; SqlWalker
{
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; function __construct($query, $parserResult, array $queryComponents)
    {
        parent::__construct($query, $parserResult, $queryComponents);

        foreach (VersionWalker::$additionalAliases as $alias =&amp;gt; $value) {
            $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;setQueryComponent($alias, $value);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-2387] convert-mapping not working correctly with composite primary keys/foreign keys in 2.4.0-RC1</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-2387</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;(Apologies if this is somehow a Symfony-specific issue)&lt;/p&gt;

&lt;p&gt;I updated my application via Composer yesterday, and received Doctrine 2.4.0-RC1. After this update, generating entities has been problematic under certain circumstances.&lt;/p&gt;

&lt;p&gt;Here is an example table in MySQL:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-sql&quot;&gt;
CREATE TABLE `user_email` (
  `user_id` int(10) unsigned NOT NULL COMMENT &apos;FK to user&apos;,
  `email` varchar(254) NOT NULL,
  `email_datasource` smallint(1) unsigned NOT NULL COMMENT &apos;FK to datasource_code&apos;,
  `insert_date` datetime NOT NULL,
  PRIMARY KEY (`user_id`,`email`,`email_datasource`),
  KEY `FK_UserEmail_DataSourceCode` (`email_datasource`),
  CONSTRAINT `FK_UserEmail_User` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In Doctrine 2.3, the mapping works correctly, and you end up with a 3-part primary key, with a user property mapped to the User entity, and a datasourceCode property mapped to the DatasourceCode entity. All good.&lt;/p&gt;

&lt;p&gt;In 2.4, the following error is given: &lt;tt&gt;Single id is not allowed on composite primary key in entity UserEmail&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;Removing one of the foreign keys in the table (either to User or DatasourceCode) but keeping the primary key set to all 3 columns allows the mapping to work. &lt;em&gt;But&lt;/em&gt;, if you then remove one of the columns from the primary key (say, email_datasource) it fails again.&lt;/p&gt;


</description>
                <environment>Symfony 2.2.0, MySQL 5.1</environment>
            <key id="14755">DDC-2387</key>
            <summary>convert-mapping not working correctly with composite primary keys/foreign keys in 2.4.0-RC1</summary>
                <type id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/bug.png">Bug</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="succinct">Nicholas Van Dusen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 3 Apr 2013 20:45:40 +0000</created>
                <updated>Tue, 11 Jun 2013 11:39:19 +0000</updated>
                                                    <fixVersion>2.3.4</fixVersion>
                                <component>Mapping Drivers</component>
                        <due></due>
                    <votes>1</votes>
                        <watches>6</watches>
                        <comments>
                    <comment id="19940" author="beberlei" created="Thu, 4 Apr 2013 20:53:11 +0000"  >&lt;p&gt;Can you provide the full stack trace to the exception please?&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
$e-&amp;gt;getTraceAsString();
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="19977" author="succinct" created="Thu, 11 Apr 2013 16:02:57 +0000"  >&lt;p&gt;Benjamin, I&apos;m not sure how to get the trace for you, since I&apos;m running from inside the Symfony2 doctrine:mapping:import command line item.&lt;/p&gt;</comment>
                    <comment id="19978" author="stof" created="Thu, 11 Apr 2013 16:11:56 +0000"  >&lt;p&gt;Use the &lt;tt&gt;--verbose&lt;/tt&gt; option when running the command&lt;/p&gt;</comment>
                    <comment id="19979" author="succinct" created="Thu, 11 Apr 2013 17:21:35 +0000"  >&lt;p&gt;I was able to get a trace for you:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;#0 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php(1571): Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey(&apos;UserEmail&apos;)
#1 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(422): Doctrine\ORM\Mapping\ClassMetadataInfo-&amp;gt;getSingleIdentifierFieldName()
#2 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(136): Doctrine\ORM\Mapping\ClassMetadataFactory-&amp;gt;completeIdGeneratorMapping(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Doctrine\ORM\Mapping\ClassMetadata))
#3 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(302): Doctrine\ORM\Mapping\ClassMetadataFactory-&amp;gt;doLoadMetadata(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Doctrine\ORM\Mapping\ClassMetadata), NULL, &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;, Array)
#4 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(212): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory-&amp;gt;loadMetadata(&apos;UserEmail&apos;)
#5 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(112): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory-&amp;gt;getMetadataFor(&apos;UserEmail&apos;)
#6 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/Command/ImportMappingDoctrineCommand.php(108): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory-&amp;gt;getAllMetadata()
#7 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php(240): Doctrine\Bundle\DoctrineBundle\Command\ImportMappingDoctrineCommand-&amp;gt;execute(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Input\ArgvInput), &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Output\ConsoleOutput))
#8 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Command\Command-&amp;gt;run(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Input\ArgvInput), &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Output\ConsoleOutput))
#9 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(78): Symfony\Component\Console\Application-&amp;gt;doRun(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Input\ArgvInput), &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Output\ConsoleOutput))
#10 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(106): Symfony\Bundle\FrameworkBundle\Console\Application-&amp;gt;doRun(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Input\ArgvInput), &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Output\ConsoleOutput))
#11 /&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;/www/html/voxrepublic/app/console(22): Symfony\Component\Console\Application-&amp;gt;run(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;(Symfony\Component\Console\Input\ArgvInput))
#12 {main}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="19995" author="beberlei" created="Sun, 14 Apr 2013 09:31:07 +0000"  >&lt;p&gt;The problem is that Doctrine seems to detect that you only have on id field on this entity and then a new function of 2.4 throws this error. I will try to reproduce this with your table. Until then could you show me the var_dump() of the $class variable in Doctrine\ORM\ClassMetadataFactory#completeIdGeneratorMapping()? This would help very much already.&lt;/p&gt;</comment>
                    <comment id="20015" author="maximilian" created="Mon, 15 Apr 2013 14:48:07 +0000"  >&lt;p&gt;I have the same error when using &quot;doctrine:mapping:import&quot;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;CREATE  TABLE IF NOT EXISTS `dev_Recipe`.`step` (

  `recipe_id` INT NOT NULL ,

  `step_number` INT NOT NULL ,

  `description` TEXT NULL ,

  `timer` INT NULL ,

  `image` VARCHAR(100) NULL ,

  PRIMARY KEY (`recipe_id`, `step_number`) ,

  INDEX `recipe_id_idx` (`recipe_id` ASC) ,

  INDEX `step_number` (`step_number` ASC) ,

  CONSTRAINT `step_recipe_id`

    FOREIGN KEY (`recipe_id` )

    REFERENCES `dev_Recipe`.`recipe` (`recipe_id` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Exception trace:
 () at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\MappingException.php:258
 Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php:1571
 Doctrine\ORM\Mapping\ClassMetadataInfo-&amp;gt;getSingleIdentifierFieldName() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:422
 Doctrine\ORM\Mapping\ClassMetadataFactory-&amp;gt;completeIdGeneratorMapping() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:136
 Doctrine\ORM\Mapping\ClassMetadataFactory-&amp;gt;doLoadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:302
 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory-&amp;gt;loadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:212
 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory-&amp;gt;getMetadataFor() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:112
 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory-&amp;gt;getAllMetadata() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand.php:126
 Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand-&amp;gt;execute() at \htdocs\SF2\vendor\doctrine\doctrine-bundle\Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand.php:59
 Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand-&amp;gt;execute() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Command\Command.php:240
 Symfony\Component\Console\Command\Command-&amp;gt;run() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:193
 Symfony\Component\Console\Application-&amp;gt;doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:78
 Symfony\Bundle\FrameworkBundle\Console\Application-&amp;gt;doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:106
 Symfony\Component\Console\Application-&amp;gt;run() at \htdocs\SF2\app\console:22&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&quot;var_dump($class);&quot; returns:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;object(Doctrine\ORM\Mapping\ClassMetadata)#470 (36) {
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
  string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;Ingredient&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namespace&quot;&lt;/span&gt;]=&amp;gt;
  string(0) &quot;&quot;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;rootEntityName&quot;&lt;/span&gt;]=&amp;gt;
  string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;Ingredient&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customRepositoryClassName&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isMappedSuperclass&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;parentClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;subClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedNativeQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sqlResultSetMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;identifier&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [0]=&amp;gt;
    string(12) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientId&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;inheritanceType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;generatorType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(4) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientId&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(12) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientId&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(45)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;]=&amp;gt;
    array(5) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(3) &lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(3) &lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(45)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldNames&quot;&lt;/span&gt;]=&amp;gt;
  array(4) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;]=&amp;gt;
    string(12) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientId&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;]=&amp;gt;
    string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;]=&amp;gt;
    string(3) &lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnNames&quot;&lt;/span&gt;]=&amp;gt;
  array(4) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientId&quot;&lt;/span&gt;]=&amp;gt;
    string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;]=&amp;gt;
    string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;color&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;]=&amp;gt;
    string(3) &lt;span class=&quot;code-quote&quot;&gt;&quot;img&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorValue&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorMap&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorColumn&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;table&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;lifecycleCallbacks&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;associationMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientCategory&quot;&lt;/span&gt;]=&amp;gt;
    array(15) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;IngredientCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(8)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;Ingredient&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isIdentifierComposite&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;containsForeignIdentifier&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;idGenerator&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sequenceGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;tableGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;changeTrackingPolicy&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isVersioned&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;versionField&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflClass&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isReadOnly&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namingStrategy&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt;]=&amp;gt;
  object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflFields&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;_prototype&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;Doctrine\ORM\Mapping\ClassMetadataInfo&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt;]=&amp;gt;
  NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#472 (36) {
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
  string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;IngredientCategory&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namespace&quot;&lt;/span&gt;]=&amp;gt;
  string(0) &quot;&quot;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;rootEntityName&quot;&lt;/span&gt;]=&amp;gt;
  string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;IngredientCategory&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customRepositoryClassName&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isMappedSuperclass&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;parentClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;subClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedNativeQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sqlResultSetMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;identifier&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [0]=&amp;gt;
    string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;inheritanceType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;generatorType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(255)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    array(4) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;text&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldNames&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
    string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnNames&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
    string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorValue&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorMap&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorColumn&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;table&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(19) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_category&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;lifecycleCallbacks&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;associationMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(2) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient&quot;&lt;/span&gt;]=&amp;gt;
    array(19) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;Ingredient&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredientCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinTable&quot;&lt;/span&gt;]=&amp;gt;
      array(3) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
        string(30) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_category_ingredient&quot;&lt;/span&gt;
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumns&quot;&lt;/span&gt;]=&amp;gt;
        array(1) {
          [0]=&amp;gt;
          array(2) {
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
            string(22) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_category_id&quot;&lt;/span&gt;
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
            string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
          }
        }
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;inverseJoinColumns&quot;&lt;/span&gt;]=&amp;gt;
        array(1) {
          [0]=&amp;gt;
          array(2) {
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
            string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
            string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;
          }
        }
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(8)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;IngredientCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinTableColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(2) {
        [0]=&amp;gt;
        string(22) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_category_id&quot;&lt;/span&gt;
        [1]=&amp;gt;
        string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;relationToSourceKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_category_id&quot;&lt;/span&gt;]=&amp;gt;
        string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;relationToTargetKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;]=&amp;gt;
        string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;ingredient_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;parent&quot;&lt;/span&gt;]=&amp;gt;
    array(19) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;IngredientCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [0]=&amp;gt;
        array(2) {
          [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
          string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;
          [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
          string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
        }
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;IngredientCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceToTargetKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;]=&amp;gt;
        string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumnFieldNames&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetToSourceKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isIdentifierComposite&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;containsForeignIdentifier&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;idGenerator&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sequenceGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;tableGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;changeTrackingPolicy&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isVersioned&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;versionField&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflClass&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isReadOnly&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namingStrategy&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt;]=&amp;gt;
  object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflFields&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;_prototype&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;Doctrine\ORM\Mapping\ClassMetadataInfo&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt;]=&amp;gt;
  NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#474 (36) {
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
  string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;Recipe&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namespace&quot;&lt;/span&gt;]=&amp;gt;
  string(0) &quot;&quot;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;rootEntityName&quot;&lt;/span&gt;]=&amp;gt;
  string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;Recipe&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customRepositoryClassName&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isMappedSuperclass&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;parentClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;subClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedNativeQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sqlResultSetMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;identifier&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [0]=&amp;gt;
    string(8) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipeId&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;inheritanceType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;generatorType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipeId&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(8) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipeId&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(255)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    array(4) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;text&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldNames&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;]=&amp;gt;
    string(8) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipeId&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnNames&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipeId&quot;&lt;/span&gt;]=&amp;gt;
    string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorValue&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorMap&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorColumn&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;table&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;lifecycleCallbacks&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;associationMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(2) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipeCategory&quot;&lt;/span&gt;]=&amp;gt;
    array(15) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipeCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;RecipeCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(8)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;Recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;users&quot;&lt;/span&gt;]=&amp;gt;
    array(19) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;users&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;Users&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      string(12) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipeRecipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinTable&quot;&lt;/span&gt;]=&amp;gt;
      array(3) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
        string(13) &lt;span class=&quot;code-quote&quot;&gt;&quot;users_recipes&quot;&lt;/span&gt;
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumns&quot;&lt;/span&gt;]=&amp;gt;
        array(1) {
          [0]=&amp;gt;
          array(2) {
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
            string(16) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_recipe_id&quot;&lt;/span&gt;
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
            string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
          }
        }
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;inverseJoinColumns&quot;&lt;/span&gt;]=&amp;gt;
        array(1) {
          [0]=&amp;gt;
          array(2) {
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
            string(8) &lt;span class=&quot;code-quote&quot;&gt;&quot;users_id&quot;&lt;/span&gt;
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
            string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
          }
        }
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(8)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;Recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinTableColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(2) {
        [0]=&amp;gt;
        string(16) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_recipe_id&quot;&lt;/span&gt;
        [1]=&amp;gt;
        string(8) &lt;span class=&quot;code-quote&quot;&gt;&quot;users_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;relationToSourceKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_recipe_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;relationToTargetKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;users_id&quot;&lt;/span&gt;]=&amp;gt;
        string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isIdentifierComposite&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;containsForeignIdentifier&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;idGenerator&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sequenceGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;tableGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;changeTrackingPolicy&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isVersioned&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;versionField&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflClass&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isReadOnly&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namingStrategy&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt;]=&amp;gt;
  object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflFields&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;_prototype&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;Doctrine\ORM\Mapping\ClassMetadataInfo&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt;]=&amp;gt;
  NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#476 (36) {
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
  string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;RecipeCategory&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namespace&quot;&lt;/span&gt;]=&amp;gt;
  string(0) &quot;&quot;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;rootEntityName&quot;&lt;/span&gt;]=&amp;gt;
  string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;RecipeCategory&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customRepositoryClassName&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isMappedSuperclass&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;parentClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;subClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedNativeQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sqlResultSetMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;identifier&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [0]=&amp;gt;
    string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;inheritanceType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;generatorType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(45)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(45)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldNames&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
    string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnNames&quot;&lt;/span&gt;]=&amp;gt;
  array(3) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
    string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorValue&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorMap&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorColumn&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;table&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(15) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_category&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;lifecycleCallbacks&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;associationMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(2) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;]=&amp;gt;
    array(19) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;Recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipeCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinTable&quot;&lt;/span&gt;]=&amp;gt;
      array(3) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
        string(22) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_category_recipe&quot;&lt;/span&gt;
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumns&quot;&lt;/span&gt;]=&amp;gt;
        array(1) {
          [0]=&amp;gt;
          array(2) {
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
            string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_category_id&quot;&lt;/span&gt;
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
            string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
          }
        }
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;inverseJoinColumns&quot;&lt;/span&gt;]=&amp;gt;
        array(1) {
          [0]=&amp;gt;
          array(2) {
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
            string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
            [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
            string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
          }
        }
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(8)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;RecipeCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinTableColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(2) {
        [0]=&amp;gt;
        string(18) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_category_id&quot;&lt;/span&gt;
        [1]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;relationToSourceKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_category_id&quot;&lt;/span&gt;]=&amp;gt;
        string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;relationToTargetKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;parent&quot;&lt;/span&gt;]=&amp;gt;
    array(19) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;RecipeCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [0]=&amp;gt;
        array(2) {
          [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
          string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;
          [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
          string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
        }
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(14) &lt;span class=&quot;code-quote&quot;&gt;&quot;RecipeCategory&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceToTargetKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;]=&amp;gt;
        string(2) &lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumnFieldNames&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetToSourceKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;parent_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isIdentifierComposite&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;containsForeignIdentifier&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;idGenerator&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sequenceGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;tableGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;changeTrackingPolicy&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isVersioned&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;versionField&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflClass&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isReadOnly&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namingStrategy&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt;]=&amp;gt;
  object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflFields&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;_prototype&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;Doctrine\ORM\Mapping\ClassMetadataInfo&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt;]=&amp;gt;
  NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#478 (36) {
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
  string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;Step&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namespace&quot;&lt;/span&gt;]=&amp;gt;
  string(0) &quot;&quot;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;rootEntityName&quot;&lt;/span&gt;]=&amp;gt;
  string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;Step&quot;&lt;/span&gt;
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;customRepositoryClassName&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isMappedSuperclass&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;parentClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;subClasses&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namedNativeQueries&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sqlResultSetMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;identifier&quot;&lt;/span&gt;]=&amp;gt;
  array(2) {
    [0]=&amp;gt;
    string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;stepNumber&quot;&lt;/span&gt;
    [1]=&amp;gt;
    string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;inheritanceType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;generatorType&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(4) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;stepNumber&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;stepNumber&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;step_number&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    array(4) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;text&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;]=&amp;gt;
    array(5) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(7) &lt;span class=&quot;code-quote&quot;&gt;&quot;integer&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;]=&amp;gt;
    array(6) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnName&quot;&lt;/span&gt;]=&amp;gt;
      string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;string&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;length&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(100)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fixed&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;nullable&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldNames&quot;&lt;/span&gt;]=&amp;gt;
  array(4) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;step_number&quot;&lt;/span&gt;]=&amp;gt;
    string(10) &lt;span class=&quot;code-quote&quot;&gt;&quot;stepNumber&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;]=&amp;gt;
    string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;]=&amp;gt;
    string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;columnNames&quot;&lt;/span&gt;]=&amp;gt;
  array(4) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;stepNumber&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;step_number&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;]=&amp;gt;
    string(11) &lt;span class=&quot;code-quote&quot;&gt;&quot;description&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;]=&amp;gt;
    string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;timer&quot;&lt;/span&gt;
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;]=&amp;gt;
    string(5) &lt;span class=&quot;code-quote&quot;&gt;&quot;image&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorValue&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorMap&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;discriminatorColumn&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;table&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
    string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;step&quot;&lt;/span&gt;
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;lifecycleCallbacks&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;associationMappings&quot;&lt;/span&gt;]=&amp;gt;
  array(1) {
    [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;]=&amp;gt;
    array(20) {
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fieldName&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(6) &lt;span class=&quot;code-quote&quot;&gt;&quot;Recipe&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;id&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [0]=&amp;gt;
        array(2) {
          [&lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;]=&amp;gt;
          string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
          [&lt;span class=&quot;code-quote&quot;&gt;&quot;referencedColumnName&quot;&lt;/span&gt;]=&amp;gt;
          string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
        }
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;type&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;mappedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;inversedBy&quot;&lt;/span&gt;]=&amp;gt;
      NULL
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isOwningSide&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceEntity&quot;&lt;/span&gt;]=&amp;gt;
      string(4) &lt;span class=&quot;code-quote&quot;&gt;&quot;Step&quot;&lt;/span&gt;
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;fetch&quot;&lt;/span&gt;]=&amp;gt;
      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(2)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;cascade&quot;&lt;/span&gt;]=&amp;gt;
      array(0) {
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRemove&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadePersist&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeRefresh&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeMerge&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;isCascadeDetach&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;sourceToTargetKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;joinColumnFieldNames&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;targetToSourceKeyColumns&quot;&lt;/span&gt;]=&amp;gt;
      array(1) {
        [&lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;]=&amp;gt;
        string(9) &lt;span class=&quot;code-quote&quot;&gt;&quot;recipe_id&quot;&lt;/span&gt;
      }
      [&lt;span class=&quot;code-quote&quot;&gt;&quot;orphanRemoval&quot;&lt;/span&gt;]=&amp;gt;
      bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
    }
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isIdentifierComposite&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;containsForeignIdentifier&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;idGenerator&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;sequenceGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;tableGeneratorDefinition&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;changeTrackingPolicy&quot;&lt;/span&gt;]=&amp;gt;
  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;(1)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isVersioned&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;versionField&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflClass&quot;&lt;/span&gt;]=&amp;gt;
  NULL
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;isReadOnly&quot;&lt;/span&gt;]=&amp;gt;
  bool(&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;)
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;namingStrategy&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt;]=&amp;gt;
  object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;reflFields&quot;&lt;/span&gt;]=&amp;gt;
  array(0) {
  }
  [&lt;span class=&quot;code-quote&quot;&gt;&quot;_prototype&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;Doctrine\ORM\Mapping\ClassMetadataInfo&quot;&lt;/span&gt;:&lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt;]=&amp;gt;
  NULL
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="20233" author="beberlei" created="Thu, 9 May 2013 10:11:52 +0000"  >&lt;p&gt;Fixed and merged back to 2.3&lt;/p&gt;</comment>
                    <comment id="20459" author="succinct" created="Wed, 29 May 2013 15:46:20 +0000"  >&lt;p&gt;I tested this again using 2.3.4 (the version which contains this fix) and it is still occurring. Attempting to import mapping for a table with 2 foreign keys in the primary key results in the error &quot;Database does not have any mapping information.&quot; Adding a third column on the primary key &quot;fixes&quot; the issue.&lt;/p&gt;

&lt;p&gt;Currently our developers are being asked to add a fake third part to the key to work around the issue, then delete that key once they get into the entity class. This is a bit tedious and I&apos;d love to see a fix!&lt;/p&gt;</comment>
                    <comment id="20460" author="succinct" created="Wed, 29 May 2013 15:46:42 +0000"  >&lt;p&gt;Issue still present in 2.3.4 and 2.4.0-RC1&lt;/p&gt;</comment>
                    <comment id="20535" author="guillermoespinoza" created="Tue, 11 Jun 2013 11:39:19 +0000"  >&lt;p&gt;The database engine I use is &lt;b&gt;PostgreSQL&lt;/b&gt;. I&apos;m having problems when mapping entities with composite primary keys in other tables. &lt;/p&gt;


    &lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;CREATE TABLE &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt;.establecimiento
    (
      id_establecimiento integer NOT NULL,
      establecimiento character varying(100) NOT NULL,
      CONSTRAINT pk_establecimiento PRIMARY KEY (id_establecimiento )
    )
    WITH (
      OIDS=FALSE
    );
    CREATE TABLE &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt;.establecimiento_sec
    (
      id_establecimiento_sec integer NOT NULL,
      id_establecimiento integer NOT NULL,
      det_seccion character varying(40) NOT NULL,
      plano character varying(100),
      sector_ingreso character varying(254),
      sponsor_imagen_sec character varying(96000),
      CONSTRAINT pk_establecimientos_sec PRIMARY KEY (id_establecimiento_sec , id_establecimiento ),
      CONSTRAINT fk_establec_reference_establec FOREIGN KEY (id_establecimiento)
          REFERENCES &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt;.establecimiento (id_establecimiento) MATCH SIMPLE
          ON UPDATE RESTRICT ON DELETE RESTRICT
    )
    WITH (
      OIDS=TRUE
    );
    CREATE TABLE &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt;.establecimiento_sec_plano
    (
      id_establecimiento_sec_plano integer NOT NULL,
      id_establecimiento_sec integer NOT NULL,
      id_establecimiento integer NOT NULL,
      det_plano character varying(512),
      cantidad integer NOT NULL,
      precio &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; precision,
      insert_charge &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; precision DEFAULT 0,
      descr character varying(254),
      CONSTRAINT pk_establecimiento_sec_plano PRIMARY KEY (id_establecimiento_sec_plano , id_establecimiento_sec , id_establecimiento ),
      CONSTRAINT fk_establecimiento_sec FOREIGN KEY (id_establecimiento, id_establecimiento_sec)
          REFERENCES &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt;.establecimiento_sec (id_establecimiento, id_establecimiento_sec) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE CASCADE
    )
    WITH (
      OIDS=FALSE
    );&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;Defining the entity establecimientoSecPlano, $establecimientoSec variable containing the keys $establecimiento and $id_establecimiento_sec&lt;/p&gt;

&lt;p&gt;//Entity/EstablecimientosSecPlano&lt;/p&gt;


    &lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;/**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity=&lt;span class=&quot;code-quote&quot;&gt;&quot;Ticketway\PruebaBundle\Entity\EstablecimientosSec&quot;&lt;/span&gt;)
     * @ORM\JoinColumns(
     *      @ORM\JoinColumn(name=&lt;span class=&quot;code-quote&quot;&gt;&quot;id_establecimiento_sec&quot;&lt;/span&gt;, referencedColumnName=&lt;span class=&quot;code-quote&quot;&gt;&quot;id_establecimiento_sec&quot;&lt;/span&gt;),
     *      @ORM\JoinColumn(name=&lt;span class=&quot;code-quote&quot;&gt;&quot;id_establecimiento&quot;&lt;/span&gt;, referencedColumnName=&lt;span class=&quot;code-quote&quot;&gt;&quot;id_establecimiento&quot;&lt;/span&gt;)) 
     */
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $establecimientoSec;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;//Entity/EstablecimientosSec&lt;/p&gt;

     &lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;/**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity=&lt;span class=&quot;code-quote&quot;&gt;&quot;Ticketway\PruebaBundle\Entity\Establecimientos&quot;&lt;/span&gt;)
     * @ORM\JoinColumn(name=&lt;span class=&quot;code-quote&quot;&gt;&quot;id_establecimiento&quot;&lt;/span&gt;, referencedColumnName=&lt;span class=&quot;code-quote&quot;&gt;&quot;id_establecimiento&quot;&lt;/span&gt;) 
     */
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $establecimiento;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;When executing the command doctrine: mapping: import I get the following error&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;Doctrine\ORM\Mapping\MappingException&amp;#93;&lt;/span&gt;&lt;/b&gt;&lt;br/&gt;
&lt;b&gt;It is not possible to map entity &apos;EstablecimientoSec&apos; with a composite primary key as part of the&lt;/b&gt; &lt;br/&gt;
&lt;b&gt;primary key of another entity &apos;EstablecimientoSecPlano#idEstablecimiento&apos;.&lt;/b&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-2235] Single table inheritance discriminator in WHERE when using arbitrary join syntax</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-2235</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;The condition on the discriminator column is placed in the WHERE clause when using arbitrary join syntax, which renders LEFT JOINs useless.&lt;/p&gt;

&lt;p&gt;Given these classes:&lt;br/&gt;
A - no inheritance&lt;br/&gt;
B1 - abstract, root of a hierarchy, discriminator column is named &apos;type&apos;&lt;br/&gt;
I setup a query builder like this:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
$qb-&amp;gt;select(&apos;a.id AS idA, b.id AS idB&apos;)
    -&amp;gt;from(&apos;\Entity\A&apos;, &apos;a&apos;)
    -&amp;gt;leftJoin(&apos;\Entity\B1&apos;, &apos;b&apos;, \Doctrine\ORM\Query\Expr\Join::WITH, &apos;a.something=b.something&apos;);
And the SQL Doctrine generates is something like &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;:
SELECT a.id, b.id FROM a LEFT JOIN b ON (a.something=b.something) WHERE b.type IN (&apos;1&apos;, &apos;2&apos;, &apos;3&apos;)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The problems is that the WHERE condition makes the left join useless.&lt;/p&gt;

&lt;p&gt;The condition on the discriminator column should be placed in the JOIN clause to avoid the problem.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14374">DDC-2235</key>
            <summary>Single table inheritance discriminator in WHERE when using arbitrary join syntax</summary>
                <type id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/bug.png">Bug</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="asm89">Alexander</assignee>
                                <reporter username="jay.eff">Jordi Forns</reporter>
                        <labels>
                    </labels>
                <created>Fri, 11 Jan 2013 12:45:37 +0000</created>
                <updated>Tue, 11 Jun 2013 00:56:23 +0000</updated>
                                    <version>2.3</version>
                                                <component>ORM</component>
                        <due></due>
                    <votes>6</votes>
                        <watches>10</watches>
                        <comments>
                    <comment id="19526" author="aearsis" created="Sun, 10 Feb 2013 21:33:15 +0000"  >&lt;p&gt;Can this be somehow worked around? If not, it is really serious problem... &lt;/p&gt;</comment>
                    <comment id="19560" author="jay.eff" created="Mon, 18 Feb 2013 16:30:42 +0000"  >&lt;p&gt;I couldn&apos;t find any workaround.&lt;br/&gt;
Trying to force the &apos;type&apos; condition in the join clause resulted useless as Doctrine would add the &apos;where&apos; condition regardless.&lt;/p&gt;</comment>
                    <comment id="19883" author="michelsalib" created="Fri, 22 Mar 2013 10:09:18 +0000"  >&lt;p&gt;Easier way to workaround right now, is to declare a OneToMany from class A to class B on a protected field (no need of getter or setter). That way you can do classic join via relationship transversing and then the condition will be placed in the ON part of the query.&lt;/p&gt;</comment>
                    <comment id="19926" author="kmusiclife" created="Mon, 1 Apr 2013 22:40:03 +0000"  >&lt;p&gt;I could access with below codes. You should use RAW SQL it is easy solution I guess. good luck.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;$qb = $em-&amp;gt;createQueryBuilder();

$qb-&amp;gt;select(&apos;a, b&apos;)
-&amp;gt;from(&apos;YourEntity1&apos;, &apos;a&apos;)
-&amp;gt;leftJoin(&apos;YourEntity2&apos;, &apos;b&apos;, \Doctrine\ORM\Query\Expr\Join::WITH, &apos;a.id = b.relationId&apos;);

$raw_sql = $qb-&amp;gt;where( 
	$qb-&amp;gt;expr()-&amp;gt;in(&apos;a.relationId&apos;, $ids)
)
-&amp;gt;orderBy(&apos;a.updatedAt&apos;, &apos;DESC&apos;)
-&amp;gt;setMaxResults(10)
-&amp;gt;getQuery()-&amp;gt;getSQL();

$conn = $em-&amp;gt;getConnection();
$stmt = $conn-&amp;gt;query($raw_sql);

/* $stmt-&amp;gt;fetchAll(); &lt;span class=&quot;code-comment&quot;&gt;// access as Array */&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="19939" author="beberlei" created="Thu, 4 Apr 2013 18:37:35 +0000"  >&lt;p&gt;Assigned to Alexander&lt;/p&gt;</comment>
                    <comment id="19997" author="beberlei" created="Sun, 14 Apr 2013 09:56:47 +0000"  >&lt;p&gt;Duplicate of &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DDC-1940&quot; title=&quot;Doctrine DQL: erroneous sql generation from dql join with &amp;quot;WITH&amp;quot; or &amp;quot;WHERE&amp;quot; clause&quot;&gt;DDC-1940&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="20087" author="jay.eff" created="Mon, 22 Apr 2013 09:38:15 +0000"  >&lt;p&gt;Benjamin: this bug doesn&apos;t seem to be a dupe of &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DDC-1940&quot; title=&quot;Doctrine DQL: erroneous sql generation from dql join with &amp;quot;WITH&amp;quot; or &amp;quot;WHERE&amp;quot; clause&quot;&gt;DDC-1940&lt;/a&gt;. Actually that issue doesn&apos;t seem to be a bug at all.&lt;/p&gt;

&lt;p&gt;As a reminder, the problem in this issue is that when performing arbitrary left joins on entities that are part of a class hierarchy, the discriminator condition is placed in the where clause instead of the join clause. This means that rows that could not be joined will have null values in the discriminator column and thus will not be returned because of the where condition (which will contain something like &quot; where x.discriminator in (1,2,3) &quot;).&lt;/p&gt;</comment>
                    <comment id="20120" author="tarnfeld" created="Sat, 27 Apr 2013 17:43:18 +0000"  >&lt;p&gt;Has this issue been resolved elsewhere? From reading over &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DDC-1940&quot; title=&quot;Doctrine DQL: erroneous sql generation from dql join with &amp;quot;WITH&amp;quot; or &amp;quot;WHERE&amp;quot; clause&quot;&gt;DDC-1940&lt;/a&gt; it doesn&apos;t seem to be a duplicate at all. I&apos;m experiencing the same problem as Jordi and can&apos;t seem to find a solution. Is there any particular reason the `IN ()` predicate is not a part of the join, but instead placed in the main `WHERE` clause?&lt;/p&gt;</comment>
                    <comment id="20122" author="tarnfeld" created="Sun, 28 Apr 2013 17:13:11 +0000"  >&lt;p&gt;I&apos;ve been looking into the root cause of this bug (or feature..) to try and understand why it&apos;s happening, and after trying various possible fixes (a little hard without full understanding of the Doctrine/Query internals) I&apos;ve ended up with a fix that seems to work well for my use case, at least. I&apos;ve not run any of the unit tests (I plan to, and may adjust my fix based on that) but the top revision is my change... &lt;a href=&quot;https://gist.github.com/tarnfeld/a6bb50ec707c7af1c5dc/revisions&quot; class=&quot;external-link&quot;&gt;https://gist.github.com/tarnfeld/a6bb50ec707c7af1c5dc/revisions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love some feedback.&lt;/p&gt;

&lt;p&gt;Pull request here: &lt;a href=&quot;https://github.com/doctrine/doctrine2/pull/656&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/doctrine2/pull/656&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="20127" author="jay.eff" created="Mon, 29 Apr 2013 14:56:54 +0000"  >&lt;p&gt;Tom&apos;s fix moves the condition of the discriminator column to the LEFT JOIN, which is exactly what was needed.&lt;/p&gt;

&lt;p&gt;Alexander: could you please give it a look?&lt;/p&gt;</comment>
                    <comment id="20429" author="jay.eff" created="Thu, 23 May 2013 16:01:36 +0000"  >&lt;p&gt;Tom&apos;s proposal seems to fix the issue.&lt;/p&gt;</comment>
                    <comment id="20529" author="baohx2000" created="Tue, 11 Jun 2013 00:56:23 +0000"  >&lt;p&gt;Agree, Tom&apos;s pull request looks like it fixes the issue. Is there a reason this hasn&apos;t been merged yet?&lt;/p&gt;</comment>
                </comments>
                <issuelinks>
                        <issuelinktype id="10000">
                <name>Duplicate</name>
                                <outwardlinks description="duplicates">
                            <issuelink>
            <issuekey id="13875">DDC-1940</issuekey>
        </issuelink>
                    </outwardlinks>
                                            </issuelinktype>
                    </issuelinks>
                <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-1283] Possible issue with PersistentCollection#getDelete/InsertDiff()</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-1283</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;Using the following code, when you go from (1, 2) to (1), (2) is deleted as expected. However, if you go from (1, 2) to (2), (1) and (2) are deleted and (2) is then inserted. Is this the desired behaviour? (i.e. 2 extra queries)&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;$bracket-&amp;gt;getTournamentLocations()-&amp;gt;takeSnapshot();

$col = $bracket-&amp;gt;getTournamentLocations()-&amp;gt;unwrap();

$col-&amp;gt;clear();

foreach ($form-&amp;gt;getValue(&apos;tournamentLocations&apos;) as $id) {
    $col-&amp;gt;add($em-&amp;gt;getReference(&apos;Tournaments_Model_TournamentLocation&apos;, $id));
}

$bracket-&amp;gt;getTournamentLocations()-&amp;gt;setDirty(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="12840">DDC-1283</key>
            <summary>Possible issue with PersistentCollection#getDelete/InsertDiff()</summary>
                <type id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/improvement.png">Improvement</type>
                                <priority id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/minor.png">Minor</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="guilhermeblanco">Guilherme Blanco</assignee>
                                <reporter username="darkangel">Glen Ainscow</reporter>
                        <labels>
                    </labels>
                <created>Thu, 21 Jul 2011 20:02:02 +0000</created>
                <updated>Thu, 20 Sep 2012 06:20:49 +0000</updated>
                                    <version>2.1</version>
                                <fixVersion>2.4</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="16211" author="beberlei" created="Tue, 26 Jul 2011 20:27:28 +0000"  >&lt;p&gt;First, you are using internal API therefore you are on your own anyways.&lt;/p&gt;

&lt;p&gt;This is marked as improvment now, the functionality works, it may just be inefficient.&lt;/p&gt;</comment>
                    <comment id="16952" author="guilhermeblanco" created="Fri, 9 Dec 2011 04:43:59 +0000"  >&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;I&apos;m marking issue as invalid because you&apos;re conceptually wrong.&lt;br/&gt;
What you&apos;re trying to do is telling that a collection of new entities is holded by a collection of Persistent entities.&lt;br/&gt;
The reference internally of PersistentCollection to ArrayCollection means a lot here.&lt;/p&gt;

&lt;p&gt;Correct code would be you to regenerate the collection (a new ArrayCollection) and just assign it to setTournamentLocations($newCollection);&lt;/p&gt;

&lt;p&gt;Does this explanation is enough for you?&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;</comment>
                    <comment id="17096" author="darkangel" created="Fri, 23 Dec 2011 18:38:31 +0000"  >&lt;p&gt;Hi Guilherme,&lt;/p&gt;

&lt;p&gt;If I do this:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;$locations = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; ArrayCollection();

foreach ($form-&amp;gt;getValue(&apos;tournamentLocations&apos;) as $id) {
    $locations-&amp;gt;add($em-&amp;gt;getReference(&apos;Tournaments_Model_TournamentLocation&apos;, $id));
}

$bracket-&amp;gt;setTournamentLocations($locations);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;... then all the records are deleted, before adding the new records. This is inefficient and causes extra, unnecessary write operations.&lt;/p&gt;

&lt;p&gt;Can&apos;t Doctrine perform diffs when persisting the collection, so that only the necessary deletes and inserts are executed?&lt;/p&gt;</comment>
                    <comment id="17236" author="guilhermeblanco" created="Fri, 13 Jan 2012 06:18:55 +0000"  >&lt;p&gt;We could add it, but I don&apos;t think it worth the effort.&lt;br/&gt;
Main problem with this one is that we use C-level binary comparison to get the diff. That&apos;s what you entities/hash pointers are different.&lt;br/&gt;
We would have to write our own diff-comparator for both collections, which would probably slowdown the entire Doctrine.&lt;/p&gt;

&lt;p&gt;I&apos;d rather consider that it&apos;s not possible to be done at the moment, but I need much more investigation for that. This will be something that I&apos;ll probably only do when I look at this issue again with a lot of time (which is really hard to happen).&lt;/p&gt;

&lt;p&gt;If you have some spare time, feel free to make some attempts.&lt;br/&gt;
Just don&apos;t forget to enable performance tests in Doctrine Unit Test suite.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-1081] Unnecessary JOIN when selecting ManyToMany/Join Table by ID.</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-1081</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;With the schema:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt; 
Image
    @Id
    $id

Tag
    @Id
    $Id

Tag_Image
    @Id
    @OneToOne(targetEntity=&quot;Tag&quot;)
    @JoinColumn(name=&quot;tag&quot;)
    $tag

    @Id
    @OneToOne(targetEntity=&quot;Image&quot;)
    @JoinColumn(name=&quot;image&quot;)
    $image
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; 

&lt;p&gt;Given the following DQL, &lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;    SELECT img
    FROM Image 
    LEFT JOIN img.tags tag
    WHERE tag.id=:tag
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; 

&lt;p&gt;Doctrine Generates this SQL&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt; 
    SELECT i0_.id AS id1 
    FROM Image i0_ 
    LEFT JOIN Tag_Image t2_ 
        ON i0_.id = t2_.image 
    LEFT JOIN Tag t1_ 
        ON t1_.id = t2_.tag 
    WHERE t1_.id = 37
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; 
&lt;p&gt;Which unncessarily joins against Tag, given that the foreign key Tag.id is also found in Tag_Image.tag.&lt;/p&gt;

</description>
                <environment></environment>
            <key id="12503">DDC-1081</key>
            <summary>Unnecessary JOIN when selecting ManyToMany/Join Table by ID.</summary>
                <type id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/improvement.png">Improvement</type>
                                <priority id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/minor.png">Minor</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="putgeminmouth">David Reisch</reporter>
                        <labels>
                    </labels>
                <created>Sun, 27 Mar 2011 12:21:20 +0000</created>
                <updated>Mon, 28 Mar 2011 10:03:44 +0000</updated>
                                    <version>2.0</version>
                                                <component>ORM</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="15596" author="beberlei" created="Sun, 27 Mar 2011 14:40:41 +0000"  >&lt;p&gt;This is not a bug, but expected behavior.&lt;/p&gt;

&lt;p&gt;You can select against the alias if its on the owning side of the association:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;SELECT img
FROM Image img 
WHERE img.tag=:tag
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In this case it is not a left join though, if you want a left join you HAVE to join.&lt;/p&gt;</comment>
                    <comment id="15598" author="putgeminmouth" created="Sun, 27 Mar 2011 20:36:44 +0000"  >&lt;p&gt;There is no owning isde of the association, you can clearly see there is an association table/entity.&lt;/p&gt;

&lt;p&gt;I can&apos;t understand how this behavior is expected. If no properties of Tag are selected for, there is no need to join against Tag since the id is already available via the association table.&lt;/p&gt;</comment>
                    <comment id="15599" author="beberlei" created="Mon, 28 Mar 2011 03:36:34 +0000"  >&lt;p&gt;I misread the mappings, sorry, i though its a @OneToOne but its actually an assocition entity with @OneToOnes.&lt;/p&gt;

&lt;p&gt;Can you show me the Image::$tags mapping also?&lt;/p&gt;</comment>
                    <comment id="15606" author="putgeminmouth" created="Mon, 28 Mar 2011 08:27:57 +0000"  >&lt;p&gt;That is correct, thanks for taking another look at this.&lt;br/&gt;
Sorry I had forgotten to include that information.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Image
    /**
        @Id
    */
    $id

    /**
        @ManyToMany(targetEntity=&quot;Tag&quot;)
        @JoinTable(name=&quot;Tag_Image&quot;, 
                            joinColumns={@JoinColumn(name=&quot;image&quot;)},
                            inverseJoinColumns={@JoinColumn(name=&quot;tag&quot;)})
    */
    $tags
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="15607" author="beberlei" created="Mon, 28 Mar 2011 08:56:44 +0000"  >&lt;p&gt;The targetEntity is wrong. I suppose it should be Image_Tag or not? If it should be Tag, then you don&apos;t need that Image_Tag entity at all.&lt;/p&gt;

&lt;p&gt;In that case i have to check if you can use the shortcut notation, however it will again not work with the left join - only inner. This is an assumption the ORM makes and there is not yet code included for the optimization. This is not a bug, but an improvement ticket. The functionality works.&lt;/p&gt;</comment>
                    <comment id="15608" author="putgeminmouth" created="Mon, 28 Mar 2011 09:12:26 +0000"  >&lt;p&gt;No argument on the ticket type...&lt;/p&gt;

&lt;p&gt;Ahh, I store some metadata in Tag_Image, which is why I manage it explicitly.&lt;/p&gt;

&lt;p&gt;In any case thanks for looking at this.&lt;/p&gt;</comment>
                    <comment id="15609" author="beberlei" created="Mon, 28 Mar 2011 09:43:12 +0000"  >&lt;p&gt;If you change the targetEntity to Tag_Image then it might already be enough to get this working without another join.&lt;/p&gt;</comment>
                    <comment id="15610" author="putgeminmouth" created="Mon, 28 Mar 2011 10:03:44 +0000"  >&lt;p&gt;With this change, the original query is invalid:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;    LEFT JOIN i.tags t
    WHERE t.id=:tag
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Because i.tags of type Tag_Image has no field id&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;Semantical Error&amp;#93;&lt;/span&gt; line 0, col 138 near &apos;id=:tag &apos;: Error: Class domain\Tag_Image has no field or association named id&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I attempt the logical modification:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;    LEFT JOIN i.tags t
    WHERE t.tag=:tag
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and get&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;SELECT i0_.id AS id0
FROM Image i0_ 
LEFT JOIN Tag_Image t1_ ON i0_.id = t1_.image 
LEFT JOIN Tag_Image t1_ ON t1_.id = t1_.tag 
WHERE t1_.tag = 37
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;SQLSTATE&lt;span class=&quot;error&quot;&gt;&amp;#91;42000&amp;#93;&lt;/span&gt;: Syntax error or access violation: 1066 Not unique table/alias: &apos;t1_&lt;/p&gt;&lt;/blockquote&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-450] Add TableGenerator Implementation</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-450</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;The TableGenerator Id Generator is not yet implemented, here is some code i came up with:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;class TableGenerator &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; AbstractIdGenerator
{
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $_tableName;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $_sequenceName;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $_allocationSize;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $_nextValue;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; $_maxValue;

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; function __construct($tableName, $sequenceName = &apos;&lt;span class=&quot;code-keyword&quot;&gt;default&lt;/span&gt;&apos;, $allocationSize = 10)
    {
        $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_tableName = $tableName;
        $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_sequenceName = $sequenceName;
        $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_allocationSize = $allocationSize;
    }

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; function generate(EntityManager $em, $entity)
    {
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ($&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_maxValue === &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt; || $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_nextValue == $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_maxValue) {
            &lt;span class=&quot;code-comment&quot;&gt;// Allocate &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; values
&lt;/span&gt;            $conn = $em-&amp;gt;getConnection();
            &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ($conn-&amp;gt;getTransactionNestingLevel() == 0) {

                &lt;span class=&quot;code-comment&quot;&gt;// use select &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; update
&lt;/span&gt;                $sql = $conn-&amp;gt;getDatabasePlatform()-&amp;gt;getTableHiLoCurrentValSql($&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_tableName, $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_sequenceName);
                $currentLevel = $conn-&amp;gt;fetchColumn($sql);
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ($currentLevel != &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;) {
                    $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_nextValue = $currentLevel;
                    $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_maxValue = $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_nextValue + $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_allocationSize;

                    $updateSql = $conn-&amp;gt;getDatabasePlatform()-&amp;gt;getTableHiLoUpdateNextValSql(
                        $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_tableName, $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_sequenceName, $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_allocationSize
                    );
                    
                    &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ($conn-&amp;gt;executeUpdate($updateSql, array(1 =&amp;gt; $currentLevel, 2 =&amp;gt; $currentLevel+1)) !== 1) {
                        &lt;span class=&quot;code-comment&quot;&gt;// no affected rows, concurrency issue, &lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; exception
&lt;/span&gt;                    }
                } &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
                    &lt;span class=&quot;code-comment&quot;&gt;// no current level returned, TableGenerator seems to be broken, &lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; exception
&lt;/span&gt;                }
            } &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
                &lt;span class=&quot;code-comment&quot;&gt;// only table locks help here, implement &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; or &lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; exception?
&lt;/span&gt;                &lt;span class=&quot;code-comment&quot;&gt;// or &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; we want to work with table locks exclusively?
&lt;/span&gt;            }
        }
        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;_nextValue++;
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="11100">DDC-450</key>
            <summary>Add TableGenerator Implementation</summary>
                <type id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/improvement.png">Improvement</type>
                                <priority id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/minor.png">Minor</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="romanb">Roman S. Borschel</assignee>
                                <reporter username="beberlei">Benjamin Eberlei</reporter>
                        <labels>
                    </labels>
                <created>Sat, 20 Mar 2010 14:02:43 +0000</created>
                <updated>Mon, 13 Feb 2012 14:11:35 +0000</updated>
                                    <version>2.0-ALPHA4</version>
                                                <component>ORM</component>
                        <due></due>
                    <votes>2</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="13771" author="guilhermeblanco" created="Wed, 4 Aug 2010 00:44:41 +0000"  >&lt;p&gt;Already merged into core.&lt;/p&gt;</comment>
                    <comment id="13772" author="beberlei" created="Wed, 4 Aug 2010 03:39:01 +0000"  >&lt;p&gt;But it is not enabled yet &lt;img class=&quot;emoticon&quot; src=&quot;http://www.doctrine-project.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; Plus we need tests to verify this works in high concurrency enviroments and does not pass the same id twice.&lt;/p&gt;

&lt;p&gt;Furthermore the DAtabase Platform Methods are completly missing. No implementations yet.&lt;/p&gt;</comment>
                    <comment id="13773" author="beberlei" created="Wed, 4 Aug 2010 03:39:18 +0000"  >&lt;p&gt;Schema-Tool support is also missing.&lt;/p&gt;</comment>
                </comments>
                <issuelinks>
                        <issuelinktype id="10002">
                <name>Dependency</name>
                                <outwardlinks description="depends on">
                            <issuelink>
            <issuekey id="13443">DBAL-223</issuekey>
        </issuelink>
                    </outwardlinks>
                                            </issuelinktype>
                    </issuelinks>
                <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>

<item>
            <title>[DDC-567] Foreign Key to Unique Field Update Failure</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-567</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;I am getting an error: &apos;Notice: Undefined index: sysname in ./libraries/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 434&apos; when I try to flush a change to a property that references a unique field on another object.&lt;/p&gt;

&lt;p&gt;From poking around in the _prepareUpdateData function, it seems that it only allows you to use identifier fields: &lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;$newValId = $uow-&amp;gt;getEntityIdentifier($newVal);

..

$result[$owningTable][$sourceColumn] = $newValId[$targetClass-&amp;gt;fieldNames[$targetColumn]];
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I&apos;ll see if I can get a test case for this set up.&lt;/p&gt;</description>
                <environment></environment>
            <key id="11310">DDC-567</key>
            <summary>Foreign Key to Unique Field Update Failure</summary>
                <type id="2" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/newfeature.png">New Feature</type>
                                <priority id="5" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/trivial.png">Trivial</priority>
                    <status id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/reopened.png">Reopened</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10000">All</security>
                        <assignee username="romanb">Roman S. Borschel</assignee>
                                <reporter username="mridgway">Michael Ridgway</reporter>
                        <labels>
                    </labels>
                <created>Mon, 3 May 2010 10:07:03 +0000</created>
                <updated>Mon, 8 Oct 2012 14:56:08 +0000</updated>
                                    <version>2.0-BETA2</version>
                                                <component>ORM</component>
                        <due></due>
                    <votes>2</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="12821" author="romanb" created="Mon, 3 May 2010 10:25:32 +0000"  >&lt;p&gt;Hi. That is right. Foreign keys (join columns) must point to primary keys, not arbitrary other columns, whether they&apos;re unique or not, Doctrine does not know.&lt;/p&gt;

&lt;p&gt;In other words, joinColumn must always refer to an identifier/pk. I&apos;m not sure but I think anything else would be a pretty strange relational model, too, but there may be usecases we have not yet encountered.&lt;/p&gt;

&lt;p&gt;I&apos;m afraid this will not be possible and would be very hard to implement. Of course if somebody has a patch we happily accept it (after reviewing).&lt;/p&gt;

&lt;p&gt;Leaving this open in the case somebody wants to work on it.&lt;/p&gt;</comment>
                    <comment id="12822" author="mridgway" created="Mon, 3 May 2010 10:25:48 +0000"  >&lt;p&gt;A minimal test case.  Removing the first flush produces the same error, so this seems to be a bug on inserts as well.&lt;/p&gt;</comment>
                    <comment id="12823" author="romanb" created="Mon, 3 May 2010 10:27:10 +0000"  >&lt;p&gt;Its not really a bug but rather a new feature &lt;img class=&quot;emoticon&quot; src=&quot;http://www.doctrine-project.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; This was not intended to work so far.&lt;/p&gt;</comment>
                    <comment id="12824" author="mridgway" created="Mon, 3 May 2010 10:39:51 +0000"  >&lt;p&gt;Ah, ok.  Maybe it didn&apos;t work before. I don&apos;t know where I got the idea that it did.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;</comment>
                    <comment id="12825" author="mridgway" created="Mon, 3 May 2010 10:40:55 +0000"  >&lt;p&gt;Oops, closed it before I noticed you said you wanted to leave it open.&lt;/p&gt;</comment>
                    <comment id="12826" author="romanb" created="Mon, 3 May 2010 10:50:32 +0000"  >&lt;p&gt;Thanks for the testcase though, it is useful. In your concrete example, is it not an option to make the sysname the @Id ?&lt;/p&gt;</comment>
                    <comment id="12827" author="mridgway" created="Mon, 3 May 2010 10:59:37 +0000"  >&lt;p&gt;Yes.  That is definitely the way it should be done in this case.  I can&apos;t really think of a case to have a reference to a unique key while still having an Id on it, except when you&apos;re working with an existing, poorly designed database (which is our case).&lt;/p&gt;

&lt;p&gt;The reason I assumed this was possible is that the references actually work for lazy loading, but as soon as you start changing the references it throws this error.&lt;/p&gt;</comment>
                    <comment id="12951" author="romanb" created="Fri, 14 May 2010 08:39:11 +0000"  >&lt;p&gt;Lowering priority.&lt;/p&gt;</comment>
                    <comment id="18809" author="dready" created="Mon, 8 Oct 2012 14:56:08 +0000"  >&lt;p&gt;although we would also need this i would suggest adding an error message if the associated column is not found in $newValId. (class BasicEntityPersister.php _prepareUpdateData)&lt;/p&gt;

&lt;p&gt;otherwise the field is populated with null leaving the developer debugging an hour :-/&lt;/p&gt;

&lt;p&gt;thx&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10589" name="DDC567Test.php" size="1676" author="mridgway" created="Mon, 3 May 2010 10:25:48 +0000" />
                </attachments>
            <subtasks>
        </subtasks>
        </item>
</channel>
</rss>