Bugfix to add Hibernate Query Language escape string for single-quotes. Added a convenience method in LexUtilities, hqlEscape.
This commit is contained in:
parent
29e09dce28
commit
496c7eb436
2 changed files with 35 additions and 8 deletions
|
@ -214,18 +214,17 @@ public class LexComponentRepository
|
||||||
|
|
||||||
Query query = null;
|
Query query = null;
|
||||||
Iterator it = null;
|
Iterator it = null;
|
||||||
String termForQuery = null;
|
|
||||||
if ( lexQuery.getFindMode().equals( LexComponentRepository.EXACT ) )
|
String termForQuery = LexUtilities.hqlEscape( term.getTerm() );
|
||||||
|
LexLogger.debug( "Escaped term string: " + termForQuery );
|
||||||
|
|
||||||
|
if ( lexQuery.getFindMode().equals( LexComponentRepository.STARTS_WITH ) )
|
||||||
{
|
{
|
||||||
termForQuery = term.getTerm();
|
termForQuery = termForQuery + "%";
|
||||||
}
|
|
||||||
else if ( lexQuery.getFindMode().equals( LexComponentRepository.STARTS_WITH ) )
|
|
||||||
{
|
|
||||||
termForQuery = term.getTerm() + "%";
|
|
||||||
}
|
}
|
||||||
else if ( lexQuery.getFindMode().equals( LexComponentRepository.ANYWHERE ) )
|
else if ( lexQuery.getFindMode().equals( LexComponentRepository.ANYWHERE ) )
|
||||||
{
|
{
|
||||||
termForQuery = "%" + term.getTerm() + "%";
|
termForQuery = "%" + termForQuery + "%";
|
||||||
}
|
}
|
||||||
String queryString = " FROM org.thdl.lex.component.ITerm as term WHERE term.term like '" + termForQuery + "' AND term.deleted=0 ORDER BY term.term";
|
String queryString = " FROM org.thdl.lex.component.ITerm as term WHERE term.term like '" + termForQuery + "' AND term.deleted=0 ORDER BY term.term";
|
||||||
try
|
try
|
||||||
|
|
|
@ -69,6 +69,34 @@ public class LexUtilities
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description of the Method
|
||||||
|
*
|
||||||
|
* @param fromString Description of the Parameter
|
||||||
|
* @return Description of the Return Value
|
||||||
|
*/
|
||||||
|
public static String hqlEscape( String fromString )
|
||||||
|
{
|
||||||
|
HashMap map = new HashMap();
|
||||||
|
map.put( "'", "''" );
|
||||||
|
StringBuffer targetString = new StringBuffer( "" );
|
||||||
|
if ( null != fromString )
|
||||||
|
{
|
||||||
|
StringTokenizer tokens = new StringTokenizer( fromString, "'%_\"", true );
|
||||||
|
while ( tokens.hasMoreTokens() )
|
||||||
|
{
|
||||||
|
String temp = tokens.nextToken();
|
||||||
|
if ( map.containsKey( temp ) )
|
||||||
|
{
|
||||||
|
temp = (String) map.get( temp );
|
||||||
|
}
|
||||||
|
targetString.append( temp );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return targetString.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of the Method
|
* Description of the Method
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue