Specifying the Object Types of FROM Clause Collections
To resolve implicit attribute names, the query engine must be able to associate each attribute or method name to a single iterator expression in the
Depending on the complexity of the query, the engine may be able to discover the proper associations on its own, but providing the specifications described here increases the chances for success.
The server region being queried should contain only homogeneous objects of the same type. See Setting Object Type Constraints for more information.
The object type information must be available when the query is created. To provide the appropriate information to the query engine, specify the type for each of your
FROM clause collection objects by importing the object’s class before running the query and typing the object inside the query. For the example region, this query is valid (all of the examples in this section assume that this
IMPORT statement is provided):
Query Using IMPORT and TYPE for Object Typing
IMPORT javaobject.Position; SELECT DISTINCT mktValue FROM /portfolios, positions.values TYPE Position WHERE mktValue > 25.00
This entire query string must be passed to the query engine, including the IMPORT statement. Import the object’s class before running the query and typecast the object inside the query. For the example region, both of these queries are valid:
Query Using IMPORT and Typecasting for Object Typing
IMPORT javaobject.Position; SELECT DISTINCT value.mktValue FROM /portfolios, (map<string,Position>)positions WHERE value.mktValue > 25.00 IMPORT cacheRunner.Position; SELECT DISTINCT mktValue FROM /portfolios, (collection<Position>)positions.values WHERE mktValue > 25.00
This entire query string must be passed to the query engine, including the
IMPORT statement. Use named iterators in the
FROM clause and explicitly prefix the path expression with iterator names.
Query Using Named Iterators for Object Typing
SELECT DISTINCT posnVal FROM /portfolios pflo, pflo.positions.values posnVal WHERE posnVal.mktValue >= 25.00
IMPORT statements in these examples assume that the
classes directory of the examples is in the
CLASSPATH. This is required so the cache server can process
IMPORT statements. The class’s package name cannot be used in the
FROM clause. The package name must be specified in an
There is one exception to these typing guidelines. If one
FROM expression lacks explicit typing, the query engine associates all unresolved attributes with that expression and creates the query. An exception is thrown if any of these attributes are not found at execution time.