Queries on managed objects in the repository must be defined in the
configuration file for the repository, which is either
openidm/conf/repo.orientdb.json, or
openidm/conf/repo.jdbc.json.
The following example shows a correlation query defined in
openidm/conf/repo.orientdb.json.
"for-userName" : "SELECT * FROM ${unquoted:_resource} WHERE userName = ${uid}"
By default, a ${value} token replacement is
assumed to be a quoted string. If the value is not a quoted string, use the
unquoted: prefix, as shown above.
The following correlation query example shows the JavaScript to call
the query defined for OrientDB. The _queryId property
value matches the name of the query specified in
openidm/conf/repo.orientdb.json,
for-userName. The source.name value
replaces ${uid} in the query. OpenIDM replaces
${unquoted:_resource} in the query with the name of the
table that holds managed objects.
{
"correlationQuery": {
"type": "text/javascript",
"source":
"var query = {'_queryId' : 'for-userName', 'uid' : source.name}; query;"
}
}The query can return zero or more objects, so the situation OpenIDM assigns to the source object depends on the number of target objects returned.
With a JDBC-based repository, the query defined in
openidm/conf/repo.jdbc.json is more complex due
to how the tables are indexed. The correlation query you define in
openidm/conf/sync.json is the same, however.

