sql >> Base de Datos >  >> RDS >> Mysql

$filter no funciona en JPA/Olingo 2.0.11 con MySQL

No resuelve el problema original y no es la forma más eficiente... pero aquí hay una solución para eliminar la declaración de 'escape' incorrecta con solo una 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 \'\\'", "");
    }
}

Esto sobrescribe el método de inspección y puede modificar la consulta sql generada cuando usa hibernate

en mi archivo persistence.xml necesito establecer la propiedad "hibernate.session_factory.statement_inspector" para conectar mi implementación de StatementInspector con mi fábrica de sesiones de hibernación

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

No sé exactamente cómo funcionaría esto con Spring-Boot, pero tal vez haya una propiedad similar para su aplicación. ¿Propiedades?