Как избежать одинарных кавычек в переменных в Solr DataImportHandler?

У меня есть DataImportHandler для импорта данных из базы данных SQL. Корневой объект Foo имеет много Bar. Таблица Bar использует Foo.Name в качестве внешнего ключа. Некоторые имена Foo заключены в одинарные кавычки, например STW's.

Запрос на импорт объекта Bar выглядит примерно так:

select name from Bar where Foo_Name = ${Foo.Name} 

Однако, когда Foo.Name содержит одинарную кавычку, импорт завершается ошибкой с исключением SQL Incorrect syntax near 's.

Я попытался обернуть параметр с помощью escapeSql(${Foo.Name}), но он, похоже, не вызывается - выполняемый sql - where Foo_Name = 'escapeSql(STW's)'

Как мне правильно избежать Foo.Name, чтобы избежать проблем, когда они содержат одинарные кавычки?


person STW    schedule 08.06.2012    source источник


Ответы (1)


Я думаю, что правильный синтаксис:

Foo_Name = '${escapeSql(Foo.Name)}'

так как escapeSql - это функция solr, а не обычная функция sql.

person beerbajay    schedule 09.06.2012