Löst das ursprüngliche Problem nicht und ist nicht der effizienteste Weg ... aber hier ist eine Problemumgehung, wie Sie die falsche 'escape'-Anweisung mit nur einem Schrägstrich entfernen können:
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 \'\\'", "");
}
}
Dadurch wird die inspect-Methode überschrieben und Sie können die generierte SQL-Abfrage ändern, wenn Sie den Ruhezustand verwenden
In meiner Datei persistence.xml muss ich dann die Eigenschaft "hibernate.session_factory.statement_inspector" setzen, um meine StatementInspector-Implementierung mit meiner Hibernate-Session-Factory zu verbinden
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
Ich weiß nicht, wie genau das mit Spring-Boot funktionieren würde, aber vielleicht gibt es eine ähnliche Eigenschaft für Ihre application.properties?