Tôi đang sử dụng API javax.persistence và Hibernate để tạo chú thích và thực thể tồn tại và thuộc tính của chúng trong cơ sở dữ liệu Oracle 11g Express.Độ chính xác lớn nhất không được duy trì bằng chú thích JPA
tôi có các thuộc tính sau đây trong một thực thể:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
Mục đích là để tồn tại một giá trị thập phân với tối đa 12 chữ số và tối đa là 9 của những chữ số bên phải của nơi thập phân.
Sau khi tính weightedScore
, kết quả là 0,1234, nhưng khi tôi cam kết thực thể với cơ sở dữ liệu Oracle, giá trị hiển thị là 0,12.
Tôi có thể thấy điều này bằng cách sử dụng đối tượng EntityManager để truy vấn mục nhập hoặc xem trực tiếp trong giao diện Oracle Application Express (Apex) trong trình duyệt web.
Tôi nên chú thích thuộc tính BigDecimal để độ chính xác được duy trì chính xác như thế nào?
Lưu ý: Chúng tôi sử dụng cơ sở dữ liệu HSQL trong bộ nhớ để chạy thử nghiệm đơn vị của chúng tôi và không gặp sự cố với thiếu chính xác, có hoặc không có chú thích @Column
.
Cập nhật:
Nhìn vào mô tả bảng, định nghĩa của cột weightedScore
là NUMBER(19, 2)
. Bây giờ tôi cũng đã thử thay đổi chú thích thành @Column(columnDefinition="Number(12, 9)")
, nhưng điều này không có hiệu lực. Có ai biết tại sao Oracle không phản hồi những chú thích này?
Báo cáo lỗi cũng cho biết lỗi chỉ áp dụng cho các giá trị lớn hơn 9,223,372,036,854,775,808 và nó đã được _fixed_. – Ben