Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách giải quyết tốt nhất cho các vấn đề đã biết với xác thực lược đồ của Hibernate về cột dấu phẩy động khi sử dụng Oracle 10g là gì?

Đây là hạn chế đã biết của trình xác thực giản đồ, hãy kiểm tra HHH-2315 . Vì vậy, bạn có ba tùy chọn ở đây (thực tế là bốn nhưng tôi đoán rằng không muốn hủy kích hoạt xác thực). Một trong hai:

  • Sử dụng float thay vì double ở cấp độ Java - đây có thể không phải là một tùy chọn.

  • Bản vá org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo) để thêm một điều kiện đặc biệt cho trường hợp cụ thể này - đây thực sự không phải là một lựa chọn nhẹ nhàng.

  • Mở rộng org.hibernate.dialect.Oracle10gDialect để làm cho nó sử dụng float cho kiểu SQL DOUBLE

    public class MyOracle10gDialect extends Oracle10gDialect {
        public MyOracle10gDialect() {
            super();
        }
        protected void registerNumericTypeMappings() {
            super.registerNumericTypeMappings();
            registerColumnType( Types.DOUBLE, "float" );
        }
    }
    

Tùy chọn sau có vẻ an toàn nhưng sẽ yêu cầu một số thử nghiệm để xem liệu nó có đưa ra bất kỳ hồi quy nào hay không. Tôi đã không xem mã trình điều khiển JDBC của Oracle, vì vậy tôi không thể nói cách floatdouble precision khác nhau ở cấp trình điều khiển.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tôi không thể sử dụng kiểu do người dùng Oracle xác định như thế này?

  2. Làm thế nào để xác định các ngày trong tuần trong Oracle?

  3. Oracle SQL:chọn từ bảng có bảng lồng nhau

  4. Làm cách nào để đặt bí danh cho một bảng trong Oracle?

  5. Xóa ký tự trước dấu gạch ngang