Nie rozwiązuje pierwotnego problemu i nie jest najskuteczniejszym sposobem..ale oto obejście tego, jak usunąć nieprawidłową instrukcję „escape” za pomocą tylko jednego ukośnika:
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 \'\\'", "");
}
}
To nadpisuje metodę inspekcji i możesz modyfikować wygenerowane zapytanie sql podczas korzystania z hibernacji
w moim pliku persistence.xml muszę ustawić właściwość „hibernate.session_factory.statement_inspector”, aby połączyć moją implementację StatementInspector z fabryką sesji hibernacji
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
nie wiem, jak dokładnie to działało z spring-boot, ale może istnieje podobna właściwość dla twojego application.properties?