Löser inte det ursprungliga problemet och är inte det mest effektiva sättet..men här är en lösning för hur man tar bort den felaktiga "escape"-satsen med bara ett snedstreck:
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 \'\\'", "");
}
}
Detta skriver över inspekteringsmetoden och du kan ändra den genererade sql-frågan när du använder viloläge
i min persistence.xml-fil måste jag sedan ställa in egenskapen "hibernate.session_factory.statement_inspector" för att ansluta min StatementInspector-implementering med min hibernate-sessionsfabrik
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
jag vet inte exakt hur detta skulle fungera med spring-boot men det kanske finns en liknande egenskap för din application.properties?