[ https://issues.apache.org/jira/browse/CAY-2863?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nikita Timofeev updated CAY-2863: --------------------------------- Fix Version/s: 4.2.3 (was: 4.2.2) > DbEntity qualifiers are no longer applied to JOIN conditions > ------------------------------------------------------------ > > Key: CAY-2863 > URL: https://issues.apache.org/jira/browse/CAY-2863 > Project: Cayenne > Issue Type: Bug > Components: Core Library > Affects Versions: 4.2, 4.2.1, 5.0-M2 > Reporter: Jurgen Doll > Priority: Major > Labels: Regression > Fix For: 4.2.3, 5.0-M2 > > > This is a regression from 3.1.3 > DbEntity qualifiers used to be applied to JOIN conditions but have now moved > to the WHERE clause. This results in queries returning no results when there > are OR conditions in the WHERE part that could satisfy the query. > Here's a possible test case for DefaultSelectTranslatorIT.java > {code:java} > @Test > public void testDbEntityQualifier_JoinQuery() throws Exception { > > final DbEntity entity = > context.getEntityResolver().getDbEntity("ARTIST"); > entity.setQualifier(ExpressionFactory.exp("ARTIST_NAME = 'Should be > on JOIN condition and not WHERE'")); > ObjectSelect<Painting> q = ObjectSelect.query(Painting.class) > .where > ( > Painting.TO_ARTIST.dot(Artist.DATE_OF_BIRTH).eq(new > java.sql.Date(1,0,1)) > .orExp( Painting.TO_GALLERY.dot( Gallery.GALLERY_NAME ).like( > "G%" ) ) > ); > // If the DbEntity qualifier is set on the WHERE condition then the > OR expression will fail to find matches > SelectTranslator transl = new DefaultSelectTranslator(q, > dataNode.getAdapter(), dataNode.getEntityResolver()); > try { > String generatedSql = transl.getSql(); > int whereNdx = generatedSql.indexOf(" WHERE "); > int joinNdx = generatedSql.indexOf(" JOIN ARTIST "); > assertTrue(generatedSql.substring(joinNdx, > whereNdx).indexOf("ARTIST_NAME") > 0); // Should be in JOIN condition > assertTrue(generatedSql.indexOf("ARTIST_NAME", whereNdx) < 0); // > Should not be part of WHERE > } > finally { > entity.setQualifier(null); > } > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)