Mysql
 sql >> Base de données >  >> RDS >> Mysql

$filter ne fonctionne pas dans JPA/Olingo 2.0.11 avec MySQL

Ne résout pas le problème d'origine et n'est pas le moyen le plus efficace... mais voici une solution de contournement pour supprimer l'instruction 'escape' incorrecte avec une seule barre oblique :

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

Cela écrase la méthode inspect et vous pouvez modifier la requête sql générée lors de l'utilisation de la mise en veille prolongée

dans mon fichier persistence.xml, je dois ensuite définir la propriété "hibernate.session_factory.statement_inspector" pour connecter mon implémentation StatementInspector à ma fabrique de session hibernate

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

Je ne sais pas exactement comment cela fonctionnerait avec Spring-Boot, mais peut-être existe-t-il une propriété similaire pour votre application.properties ?