sql >> Databasteknik >  >> RDS >> Mysql

$filter fungerar inte i JPA/Olingo 2.0.11 med MySQL

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?




  1. Det går inte att ansluta PostgreSQL till fjärrdatabas med pgAdmin

  2. Åtkomst nekad för användaren 'www-data'@'localhost – hur ska man hantera det?

  3. Group_Concat i Concat fungerar inte med NULL-värden

  4. Vad behöver jag för att köra SQL?