Ne résout pas le problème d'origine et n'est pas le moyen le plus efficace... mais voici une solution de contournement pour supprimer l'instruction 'escape' incorrecte avec une seule barre oblique :
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 \'\\'", "");
}
}
Cela écrase la méthode inspect et vous pouvez modifier la requête sql générée lors de l'utilisation de la mise en veille prolongée
dans mon fichier persistence.xml, je dois ensuite définir la propriété "hibernate.session_factory.statement_inspector" pour connecter mon implémentation StatementInspector à ma fabrique de session hibernate
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
Je ne sais pas exactement comment cela fonctionnerait avec Spring-Boot, mais peut-être existe-t-il une propriété similaire pour votre application.properties ?