Không giải quyết được vấn đề ban đầu và không phải là cách hiệu quả nhất..nhưng đây là một giải pháp cho cách loại bỏ câu lệnh 'Escape' không chính xác chỉ bằng một dấu gạch chéo:
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 \'\\'", "");
}
}
Điều này ghi đè phương thức kiểm tra và bạn có thể sửa đổi truy vấn sql đã tạo khi sử dụng chế độ ngủ đông
trong tệp Persence.xml của mình, sau đó, tôi cần đặt thuộc tính "hibernate.session_factory.statement_ins rà" để kết nối việc triển khai StatementIns Inspector với nhà máy phiên ngủ đông của tôi
<property
name="hibernate.session_factory.statement_inspector"
value="SqlStatementInspector" />
tôi không biết chính xác điều này sẽ hoạt động như thế nào với spring-boot nhưng có thể có một thuộc tính tương tự cho application.properties của bạn?