-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enforcing Abstract Entity in DiscriminatorMap is important for some operations #9142
Comments
cc @BenMorel |
Looking forward to the test case, I'd like to fix the need for abstract classes in the discriminator map rather than reintroducing it. AFAIK, it always worked fine without in Doctrine ORM <= 2.8, so requiring it now looks like a regression. |
I added a test case demonstrating the one issue I know of which is caused by missing abstract middle class in the I would also like to find a way around having abstract middle class in the DiscriminatorMap YET I'd prefer to keep the validator catching this very dangerous case UNTIL we have a working solution. I'm not sure if there are any other problems related to this except the one demonstrated. |
We should perform some archeology to find out why we enforced this with 2.9 |
@beberlei I'd say it's obvious why the check was added -> to prevent issues like the one demonstrated in the test case. Therefore I think the removal of the check is a regression as it allows for hidden problems that were there even BEFORE v2.9 We should find out a solution for the root case but that's rather a feature request and should be discussed separately. As I already mentioned, we encountered exactly this issue in our production code on v2.7 and the check added in 2.9 prevents the issue from occurring again. |
@BenMorel the problem is "all abstract classes" are not known when root entity is loaded |
Join #10389 for a discussion of whether "all abstract entities must be declared" shall be the new policy and also be enforced by a runtime check (not only in the Schema Tool). |
Since doctrine#10411 has been merged, no more need to specify all intermediate abstract entity classes. Thus, we can relax the schema validator check as requested in doctrine#9095. The reasons given in doctrine#9142 no longer apply.
Since doctrine#10411 has been merged, no more need to specify all intermediate abstract entity classes. Thus, we can relax the schema validator check as requested in doctrine#9095. The reasons given in doctrine#9142 no longer apply. Fixes doctrine#9095 Closes doctrine#9096
Since doctrine#10411 has been merged, no more need to specify all intermediate abstract entity classes. Thus, we can relax the schema validator check as requested in doctrine#9095. The reasons given in doctrine#9142 no longer apply. Fixes doctrine#9095 Closes doctrine#9096
Since doctrine#10411 has been merged, no more need to specify all intermediate abstract entity classes. Thus, we can relax the schema validator check as requested in doctrine#9095. The reasons given in doctrine#9142 no longer apply. Fixes doctrine#9095
Bug Report
Summary
Recent fix introduced in 2.10.2 9096: Fix SchemaValidator with abstract child class in discriminator map is a regression to the SchemaValidator as having all
@Entity
classes, including those that are non-instantiable (abstract) is important for some operation.@beberlei already mentioned it here #8736 (comment)
I also mentioned this in the original issue (#8771 (comment)) regarding this change.
I'll try to prepare a convincing test case.
Current behaviour
Abstract class marked with
@Entity
annotation does not have to be part of DiscriminatorMap (according to SchemaValidator)Expected behavior
Only
@MappedSuperclass
does not have to be part of the SchemaValidator, missing@Entity
is dangerous in some casesThe text was updated successfully, but these errors were encountered: