@@ -180,7 +180,7 @@ public void testSubquery() {
180
180
.hasFieldOrPropertyWithValue ( "entityName" , "ubic.gemma.model.expression.experiment.ExpressionExperiment" )
181
181
.hasFieldOrPropertyWithValue ( "identifierPropertyName" , "id" );
182
182
Assertions .assertThat ( s .getAliases () )
183
- .contains ( new Subquery .Alias ( "allCharacteristics" , "ac" ) );
183
+ .contains ( new Subquery .Alias ( null , "allCharacteristics" , "ac" ) );
184
184
Assertions .assertThat ( s .getFilter () )
185
185
.hasFieldOrPropertyWithValue ( "objectAlias" , "ac" )
186
186
.hasFieldOrPropertyWithValue ( "propertyName" , "valueUri" )
@@ -191,6 +191,33 @@ public void testSubquery() {
191
191
FilterQueryUtils .formRestrictionClause ( Filters .by ( f ) ) );
192
192
}
193
193
194
+ @ Test
195
+ public void testSubqueryWithMultipleJointures () {
196
+ Filter f = expressionExperimentDao .getFilter ( "experimentalDesign.experimentalFactors.factorValues.characteristics.valueUri" , Filter .Operator .in , Collections .singleton ( "http://example.com" ) );
197
+ Assertions .assertThat ( f .getOperator () )
198
+ .isEqualTo ( Filter .Operator .inSubquery );
199
+ Assertions .assertThat ( f .getRequiredValue () )
200
+ .isNotNull ()
201
+ .asInstanceOf ( InstanceOfAssertFactories .type ( Subquery .class ) )
202
+ .satisfies ( s -> {
203
+ Assertions .assertThat ( s )
204
+ .hasFieldOrPropertyWithValue ( "entityName" , "ubic.gemma.model.expression.experiment.ExpressionExperiment" )
205
+ .hasFieldOrPropertyWithValue ( "identifierPropertyName" , "id" );
206
+ Assertions .assertThat ( s .getAliases () )
207
+ .containsExactly ( new Subquery .Alias ( null , "experimentalDesign" , "alias1" ),
208
+ new Subquery .Alias ( "alias1" , "experimentalFactors" , "alias2" ),
209
+ new Subquery .Alias ( "alias2" , "factorValues" , "alias3" ),
210
+ new Subquery .Alias ( "alias3" , "characteristics" , "fvc" ) );
211
+ Assertions .assertThat ( s .getFilter () )
212
+ .hasFieldOrPropertyWithValue ( "objectAlias" , "fvc" )
213
+ .hasFieldOrPropertyWithValue ( "propertyName" , "valueUri" )
214
+ .hasFieldOrPropertyWithValue ( "operator" , Filter .Operator .in )
215
+ .hasFieldOrPropertyWithValue ( "requiredValue" , Collections .singletonList ( "http://example.com" ) );
216
+ } );
217
+ // assertEquals( "and (ee.id in (select e.id from ubic.gemma.model.expression.experiment.ExpressionExperiment e join e.allCharacteristics ac where ac.valueUri in (:ac_valueUri1)))",
218
+ // FilterQueryUtils.formRestrictionClause( Filters.by( f ) ) );
219
+ }
220
+
194
221
private ExpressionExperiment reload ( ExpressionExperiment e ) {
195
222
sessionFactory .getCurrentSession ().flush ();
196
223
sessionFactory .getCurrentSession ().evict ( e );
0 commit comments