Curly braces ({}) within literals (strings within quotes) are ignored. This means that statements like the following will not work as you might expect:
/** * @jc:sql statement:: * SELECT name * FROM employees * WHERE content LIKE '%{partialName}%' * :: */ public String[] partialNameSearch(String partialName);
Since the curly braces are ignored inside the literal string, the expected substitution of the partialName Java String into the SELECT statement does not occur. To avoid this problem, pre-format the match string before invoking the Database control method, as shown below. Note that single quotes are not included in the pre-formatted string because single quotes are implicitly added to the substitution value when it is passed to the SQL query.
String partialNameToMatch = "%" + matchString + "%" String [] names = myDBControl.partialNameSeach(partialNameToMatch);
Then pass the pre-formatted string to the Database control:
/** * @jc:sql statement:: * SELECT name * FROM employees * WHERE name LIKE {partialNameToMatch} * :: */ public String[] partialNameSearch(String partialNameToMatch);
For more information about parameter substitution in Database control methods, see Parameter Substitution in @jc:sql Statements.