Не решава първоначалния проблем и не е най-ефективният начин... но ето заобиколно решение за това как да премахнете неправилното изявление за 'escape' само с една наклонена черта:
public class SqlStatementInspector implements StatementInspector {
private static final long serialVersionUID = 1L;
private static final Logger LOG = Logger.getLogger(SqlStatementInspector.class);
@Override
public String inspect(String sql) {
if (!sql.contains("escape \'\\'")) {
return sql;
}
// OData JPA query correction -> current version (2.0.11) contains
// the invalid 'escape "\"' statement that delivers no results
LOG.info("Replacing invalid statement: escape \"\\\"");
return sql.replace("escape \'\\'", "");
}
}
Това презаписва метода за проверка и можете да промените генерираната sql заявка, когато използвате hibernate
в моя файл persistence.xml след това трябва да задам свойството "hibernate.session_factory.statement_inspector", за да свържа моята реализация на StatementInspector с моята фабрика за сесии за хибернация
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
Не знам как точно би работило това с spring-boot, но може би има подобно свойство за вашето application.properties?