sql >> Database >  >> RDS >> Mysql

$filter werkt niet in JPA/Olingo 2.0.11 met MySQL

Lost het oorspronkelijke probleem niet op en is niet de meest efficiënte manier..maar hier is een oplossing voor het verwijderen van de onjuiste 'escape'-instructie met slechts één schuine streep:

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

Dit overschrijft de inspect-methode en u kunt de gegenereerde sql-query wijzigen wanneer u de slaapstand gebruikt

in mijn persistence.xml-bestand moet ik dan de eigenschap "hibernate.session_factory.statement_inspector" instellen om mijn StatementInspector-implementatie te verbinden met mijn slaapstandsessiefabriek

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

ik weet niet hoe dit precies zou werken met spring-boot, maar misschien is er een vergelijkbare eigenschap voor uw application.properties?




  1. XML-prestatietips

  2. Bespaar tijd bij het uitvoeren van Microsoft Access-rapporten met filters in de lay-outweergave

  3. Groeperen op alias (Oracle)

  4. MySQL MariaDB - Query met behulp van tijdelijke tabel