sql >> Databáze >  >> RDS >> Mysql

$filter nefunguje v JPA/Olingo 2.0.11 s MySQL

Neřeší původní problém a není to nejúčinnější způsob..ale zde je řešení, jak odstranit nesprávný příkaz „únik“ pouze jedním lomítkem:

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 \'\\'", "");
    }
}

Tím se přepíše metoda inspect a vygenerovaný dotaz SQL můžete upravit při použití hibernace

v mém souboru persistence.xml pak musím nastavit vlastnost "hibernate.session_factory.statement_inspector", abych propojil moji implementaci StatementInspector s továrnou hibernate session

<property
                name="hibernate.session_factory.statement_inspector"
                value="SqlStatementInspector" />

Nevím, jak přesně by to fungovalo s spring-boot, ale možná existuje podobná vlastnost pro vaši application.properties?




  1. Úspěšné strategie zálohování a obnovy MySQL/MariaDB

  2. PHP Není vybrána žádná databáze

  3. Importujte soubor CSV na SQL Server pomocí SqlBulkCopy

  4. Tabulkové funkce v ORACLE 11g? ( parametrizované pohledy )