2016-03-23 16 views
7

Tôi có thể sử dụng Tùy chọn trong các trường của thực thể ngủ đông không? Có thể với một số loại người dùng tùy chỉnh?Java 8 Tùy chọn trong trường thực thể

Tôi biết tôi có thể sử dụng nó trong các phương pháp sử dụng AccesType.FIELD (Tôi vẫn sử dụng AccesType.FIELD).

Tại sao tôi muốn điều này? Vâng, tôi muốn ở xa càng nhiều càng tốt.

Trả lời

1

Bạn không nên sử dụng Optional làm trường trong một lớp (hoặc cho sử dụng Hibernate hay không).

Như đã nêu trong Javadoc, đây là lớp dựa trên giá trị, vì vậy không thể tuần tự hóa và sử dụng bình đẳng tham chiếu (==) và hashcode danh tính có kết quả không thể đoán trước. Thay vào đó, bạn có thể lưu trữ một thể hiện của lớp đích (null là ok trong cơ sở dữ liệu quan hệ) và trả về tùy chọn từ accessors (không phải là getter, mà Hibernates mong muốn trả về cùng một lớp như trường, nếu tôi nhớ tốt).

Hy vọng điều này sẽ hữu ích.

+0

Điều gì là không thể đoán trước về triển khai equals và hashCode không bắt buộc? Họ dường như có một hợp đồng rõ ràng, vững chắc trong Javadoc mà bạn liên kết. –

+0

Xin lỗi vì phím tắt. Tôi không có nghĩa là bằng và hashcode, nhưng == và hashcode bản sắc. Cảm ơn bạn đã sửa chữa. – cdelmas

Các vấn đề liên quan