Comments (1)
SELECT FROM A
WHERE a.b == :param1
&&
(
a.coll1.contains(:param2)
||
(
a.coll2.contains(var1)
&&
:param2.coll3.contains(var1)
)
)
Specifically the problem with this query is firstly that it uses OR, which means that any use of "contains" has to use "EXISTS (subquery)" currently. This in itself is not a major problem, it's just a problem dependent on what the
element of this contains is needed for.
In your case you want to link the element of one of these "contains" to one of the other "contains". Since we are using "EXISTS(subquery)" we cannot do that correctly (SQL doesn't work like that, whilst Java does). If you had wanted to link the "var1" to some fixed constraint then that would have been ok, and would fit within the subquery
of the EXISTS. BUT you want to link outside of the EXISTS.
Workarounds
- Split the query into 2 and run individually and sum the results
SELECT FROM A WHERE a.b == :param1 && a.coll1.contains(:param2)
SELECT FROM A WHERE a.b == :param1 && a.coll2.contains(var1) && :param2.coll3.contains(var1) - Don't pass in your second parameter as it is now, and instead generate the single query based on the values that are in
"myMainStrategy.downlineMarketStrategies". So you then would have a query like
SELECT FROM A
WHERE a.b == :param1
&&
(
a.coll1.contains(:param2)
||
(
a.coll2.contains(:param3a)
||
a.coll2.contains(:param3b)
||
a.coll2.contains(:param3c)
... etc
)
)
Or just propose what SQL you think could be generated to do it in one query with the current input.
from datanucleus-rdbms.
Related Issues (20)
- NullPointerException in ResultClassROF.getObject() in 6.0.2 HOT 6
- ArgType not cached for null value in first Result in ResultSet HOT 1
- Wrong identity type generated for type `long` with PostgreSQL
- ResultClassROF can fail to set fields/properties when JDBC driver returns unassignable type HOT 9
- datanucleus.query.jdoql.{varName}.join extension does not work when "varName" is not lower case HOT 4
- Support bulk-fetch on a Collection when field is empty
- BatchUpdateException when reordering elements of 1-m relationship as List<> (join table) - with testcase HOT 3
- Provide InitSQL hikari options HOT 2
- Support ConnectionInitSQL with HikariCP
- keyword "COLUMN_NAME" for dm database HOT 3
- `UpdateStmtAllowTableAliasInSet` is not honored for update statements involving `DelegatedExpression`s HOT 2
- Issue #470 doesn't allow for discriminatorColumnName not being in different case
- Provide registerMbeans HikariCP options
- Unexpected query performance numbers in datanucleus log HOT 2
- JDOQLQuery should throw exception if datastore does not support query canceling
- `SQLStatement#getSQLText` implementations are not thread-safe HOT 1
- Question: strategy for dealing with mysql table limit when eagerly fetching fields of a large object HOT 1
- Add support for persisting PostgreSQL `JSON` and `JSONB` fields HOT 1
- Write timeout does not work for JDO update operations
- [MYSQL] Column name mismatch when checking for primary key specifications HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datanucleus-rdbms.