मूल मुद्दे को हल नहीं करता है और सबसे कुशल तरीका नहीं है..लेकिन यहां केवल एक स्लैश के साथ गलत 'एस्केप' स्टेटमेंट को निकालने का तरीका बताया गया है:
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.session_factory.statement_inspector" सेट करने की आवश्यकता है
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
मुझे नहीं पता कि यह स्प्रिंग-बूट के साथ वास्तव में कैसे काम करेगा, लेकिन हो सकता है कि आपके आवेदन के लिए एक समान संपत्ति हो। गुण?