Trình điều khiển JDBC hoạt động tốt.
Như bạn đã biết trong phần bình luận, vấn đề là
a) Spring Data JDBC hiện yêu cầu Dialect
cho mỗi cơ sở dữ liệu
b) Dữ liệu mùa xuân JDBC không gửi cùng với Dialect
cho Oracle.
Cách khắc phục:
Như được mô tả trong Phương ngữ JDBC Firebird của Spring Data không được công nhận và trong https:// spring .io / blog / 2020/05/20 / migrating-to-spring-data-jdbc-2-0
bạn cần cung cấp Dialect
của riêng mình triển khai ngay bây giờ.
Một cái gì đó như thế này sẽ hoạt động:
class MyOracleDialect extends AnsiDialect {
private static final LimitClause LIMIT_CLAUSE = new LimitClause() {
@Override
public String getLimit(long limit) {
return String.format("FETCH NEXT %d ROWS ONLY", limit);
}
@Override
public String getOffset(long offset) {
return String.format("OFFSET %d ROWS", offset);
}
@Override
public String getLimitOffset(long limit, long offset) {
return String.format("OFFSET %d ROWS FETCH NEXT %d ROWS ONLY", offset, limit);
}
@Override
public Position getClausePosition() {
return Position.AFTER_ORDER_BY;
}
};
@Override
public LimitClause limit() {
return LIMIT_CLAUSE;
}
}
Sau đó, bạn cần thực hiện Dialect
có sẵn qua DialectProvider
như được mô tả trong câu hỏi Stackoverflow được tham chiếu:
Một số thông tin cơ bản:
Cho đến nay, nhóm Dữ liệu mùa xuân không chạy các bài kiểm tra tích hợp của họ với cơ sở dữ liệu Oracle. Điều này là do trong một thời gian khá dài, người ta không rõ cách thực hiện điều đó theo cách hợp pháp vì tất cả mã bao gồm cả cơ sở hạ tầng xây dựng đều là mã nguồn mở và Oracle yêu cầu chấp nhận tất cả các loại nội dung để sử dụng phiên bản cơ sở dữ liệu hoặc trình điều khiển của chúng.
Hiện tại, hình ảnh Docker đã có sẵn để thử nghiệm và trình điều khiển JDBC có sẵn từ Maven Central. Vẫn còn một chút khó khăn vì các tùy chọn hiện tại cho hình ảnh docker mà tôi biết cho phép bạn chọn giữa kích thước hình ảnh bao nhiêu GB hoặc thời gian khởi động khoảng 15 phút.
Dù sao cũng có một thành viên cộng đồng đang giải quyết vấn đề: https://jira.spring.io/ duyệt / DATAJDBC-256
Do đó, tôi tin tưởng rằng chúng tôi sẽ có thể hỗ trợ đầy đủ cho Oracle trong tương lai gần.