sql >> データベース >  >> RDS >> Mysql

$filterがMySQLを使用するJPA/Olingo2.0.11で機能しない

    元の問題を解決せず、最も効率的な方法ではありません。ただし、スラッシュを1つだけ使用して誤った「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 \'\\'", "");
        }
    }
    

    これにより、inspectメソッドが上書きされ、Hibernateを使用するときに生成されたSQLクエリを変更できます

    次に、persistence.xmlファイルでプロパティ「hibernate.session_factory.statement_inspector」を設定して、StatementInspectorの実装を休止状態のセッションファクトリに接続する必要があります

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

    これがspring-bootでどのように機能するかはわかりませんが、application.propertiesに同様のプロパティがあるのではないでしょうか?




    1. AWSRDSとは何ですか

    2. エラー2006:MySQLサーバーがPython、Bottle Microframework、Apacheを使用してなくなった

    3. where句のMySQL'user_id'があいまいな問題

    4. OracleからPostgreSQLへ:START WITH / CONNECT BY