Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

$filter não funciona no JPA/Olingo 2.0.11 com MySQL


Não resolve o problema original e não é a maneira mais eficiente, mas aqui está uma solução alternativa para remover a instrução 'escape' incorreta com apenas uma barra:
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 \'\\'", "");
    }
}

Isso substitui o método inspecionar e você pode modificar a consulta sql gerada ao usar o hibernate

no meu arquivo persistence.xml eu preciso definir a propriedade "hibernate.session_factory.statement_inspector" para conectar minha implementação do StatementInspector com minha fábrica de sessões de hibernação
<property
                name="hibernate.session_factory.statement_inspector"
                value="SqlStatementInspector" />

não sei exatamente como isso funcionaria com o spring-boot, mas talvez haja uma propriedade semelhante para o seu application.properties?