Мы используем Apache Cayenne для интеграции уже существующей базы данных MS SQL Server с нашим приложением (у меня нет разрешения на изменение DDL базы данных, включая сопоставление таблицы/схемы/базы данных).
База данных использует определенную сортировку (хорватскую), которая определяет отдельные символы, такие как «nj» и «dž», поэтому, когда я выполняю запрос LIKE
:
select * from table where name like '%N%'
Я получаю нулевые результаты, с другой стороны, если я делаю:select * from table where name like '%NJ%'
я получаю несколько результатов.
Очевидно, это легко исправить, добавив collate
в конец запроса, но я не знаю, как это сделать с Cayenne. Есть ли способ реализовать это, не отказываясь от преимуществ ORM в целом?
tl;dr: есть ли способ предварительной обработки запросов перед обращением к базе данных, например:
query = query + ' collate SQL_Latin1_General_CP1_CI_AS'