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

JPA 2.0 Oracle DATE có thời gian trống

Đối với loại sự cố này, việc cung cấp phiên bản trình điều khiển JDBC và phương ngữ bạn đang sử dụng thường hữu ích.

Dù sao, tôi hiểu là bạn thực sự muốn ánh xạ sau (cho DATE THỜI GIAN):

@Column(name = "READING_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date readingDate;

Và vấn đề bạn đang gặp phải bằng cách nào đó liên quan đến sự điên rồ được Oracle giới thiệu với phiên bản 9.2, hãy xem Điều gì đang xảy ra với DATE và TIMESTAMP? (nói tóm lại, họ đã giới thiệu TIMESTAMP và thay đổi ánh xạ của DATE Kiểu SQL, đọc Câu hỏi thường gặp). Có một số tùy chọn để giải quyết nó (tất nhiên tôi giả sử bạn đang sử dụng TemporalType.TIMESTAMP ánh xạ):

Sử dụng TIMESTAMP loại cột (Ý tôi không phải là TemporalType.TIMESTAMP ở đây, tôi thực sự có nghĩa là loại cột ở phía DB). Nhưng nếu bạn không cần độ chính xác nano giây, đây không phải là lựa chọn tốt nhất.

Hoặc đặt oracle.jdbc.V8Compatible=true chế độ tương thích, dưới dạng thuộc tính hệ thống hoặc thuộc tính kết nối:

<property name="hibernate.connection.oracle.jdbc.V8Compatible">true</property>

Có, bạn có thể đặt các thuộc tính kết nối tùy ý như thế này. Từ tài liệu Hibernate:

Hoặc sử dụng trình điều khiển Oracle JDBC 11.1 (họ đã "khắc phục" sự cố bằng cách hoàn nguyên thay đổi). Đây là giải pháp lý tưởng cho IMO (V8Compatible thứ không được dùng nữa).

Vấn đề liên quan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:chỉ định giá trị mặc định cho cột kiểu đối tượng

  2. Cách chọn các giá trị cụ thể từ XML bằng cách sử dụng Oracle Xquery

  3. SET NULL:Chỉ định một chuỗi để trả về bất cứ khi nào giá trị rỗng xảy ra trong SQLcl / SQL * Plus

  4. Chọn n phần tử hàng đầu của một nhóm trong Oracle

  5. Một ví dụ để chứng minh lỗ hổng của SQL Injection và cách ngăn chặn nó trong Oracle