prevent wrong SQL generation in ERXExistsQualifier #796
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As the destination attributes are already selected properly before, this string relacement is not needed anymore and even leads to invalid SQL in some cases.
Example: We have three tables: book, chapter and page. The two relationships between them are 1:n. We want to find all books which have a page with number 26.
One way to write the qualifier is:
new ERXExistsQualifier(Page.NUMBER.is(26), Book.CHAPTERS.dot(Chapter.PAGES).key(), true)
But this leads to the following invalid SQL:
Proper SQL should be:
I have tested this change with a few combinations of constructors and relationships. However there will be edge cases, which I have missed. So additional tests by someone else would be good.