Mysql
 sql >> Database >  >> RDS >> Mysql

$filtro non funziona in JPA/Olingo 2.0.11 con MySQL

Non risolve il problema originale e non è il modo più efficiente... ma ecco una soluzione alternativa su come rimuovere l'istruzione 'escape' errata con una sola 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 \'\\'", "");
    }
}

Questo sovrascrive il metodo inspect e puoi modificare la query sql generata quando usi l'ibernazione

nel mio file persistence.xml devo quindi impostare la proprietà "hibernate.session_factory.statement_inspector" per connettere la mia implementazione di StatementInspector con la mia sessione di ibernazione

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

non so come funzionerebbe esattamente con l'avvio a molla, ma forse esiste una proprietà simile per la tua application.properties?