Mysql
 sql >> база данни >  >> RDS >> Mysql

$filter не работи в JPA/Olingo 2.0.11 с MySQL

Не решава първоначалния проблем и не е най-ефективният начин... но ето заобиколно решение за това как да премахнете неправилното изявление за 'escape' само с една наклонена черта:

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

Това презаписва метода за проверка и можете да промените генерираната sql заявка, когато използвате hibernate

в моя файл persistence.xml след това трябва да задам свойството "hibernate.session_factory.statement_inspector", за да свържа моята реализация на StatementInspector с моята фабрика за сесии за хибернация

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

Не знам как точно би работило това с spring-boot, но може би има подобно свойство за вашето application.properties?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. четене на utf-8 съдържание от mysql таблица

  2. Съхранение на голям JSON - двоичен или текстов

  3. PHP връзката е неуспешна:SQLSTATE[HY000] [2002] Връзката е отказана

  4. Рейтингова система в PHP и MySQL

  5. Изберете най-отличителните резултати, подредени по честота