Tôi có một bảng với 11 cột, nhưng tôi cần chỉ nhận được 2 trong số chúng trong ứng dụng của tôi, tôi đang sử dụng kết hợp spring/hibernate/DAO. Bây giờ tôi có một lớp miền bao gồm tất cả 11 trường, và ánh xạ tệp ánh xạ tất cả 11 cột trong bảng. Làm cách nào để sử dụng chỉ nhận được 2 trong số đó không phải tất cả?Nhận ít cột hơn với hibernate
Trả lời
Hoặc:
Sử dụng dự báo - Pro: không có gì để thêm - Con: Không an toàn kiểu (kết quả là một
List
hàng nơi mỗi hàng là mộtObject[])
:select f.foo, f.bar from FatEntity f
Sử dụng một biểu thức hàm dựng trong mệnh đề SELECT (lớp được chỉ định không bắt buộc phải là một thực thể hoặc được ánh xạ tới cơ sở dữ liệu) - Pro: giải pháp typesafe - Con: Các lớp khác, trừ khi bạn sử dụng lại
FatEntity
làm chủ sở hữu nhiều lĩnh vực sẽnull
:select new com.acme.FatEntityDetails(f.id, f.foo, f.bar) from FatEntity f
Lưu ý rằng nếu một tên lớp thực thể được quy định tại các khoản
SELECT NEW
, kết quả các trường hợp thực thể đang trong trạng thái mới (không tính dai dẳng).Sử dụng một thực thể khác được ánh xạ trên cùng một bảng chỉ với các trường bắt buộc - Pro: Đây là thực thể thực mà bạn có thể sửa đổi và cập nhật - Con: Các lớp khác.
from LightEntity
Sự khác biệt chính giữa # 2 và # 3 là:
2 không yêu cầu người giữ như là một thực thể nào cả.
- chủ sở hữu trong # 2 có thể là một thực thể được ánh xạ trên một bảng khác.
- nếu # 2 trả về các thực thể, chúng ở trạng thái mới (điều này có thể là vấn đề hoặc không).
Hãy thử:
SELECT myEntity.one, myEntity.two FROM MyEntity myEntity
Bạn thậm chí có thể làm:
SELECT new MyEntityDescription(myEntity.one, myEntity.two) FROM MyEntity myEntity
để có được một danh sách mô tả thực thể.
Nếu bạn không bao giờ cần nhiều hơn 2 cột trong bảng, bạn có thể thay đổi ánh xạ ngủ đông của bạn để chỉ ánh xạ 2 cột cần thiết đó vào lớp thực thể. Chỉ ánh xạ những cột bảng mà bạn muốn truy cập trong ứng dụng của bạn. Hãy nhớ rằng các ràng buộc cơ sở dữ liệu trên các cột "bị bỏ qua" có thể bị vi phạm như không ràng buộc null, khóa ngoài hoặc ràng buộc duy nhất.
tôi cũng cần có 2 trường trong lớp miền nào? –
- 1. Junit: ít hơn xác nhận?
- 2. Lucene.Net lớn hơn/ít hơn so với TermRangeQuery?
- 3. ít màu hơn Vertices
- 4. Apache Ant Ít hơn
- 5. Chú thích xác nhận Hibernate - xác nhận rằng ít nhất một trường không phải là rỗng
- 6. Strange Hibernate ngoại lệ với cột kiểu
- 7. ống ít hơn để Emacs
- 8. Sử dụng ít hơn như gdb pager
- 9. Có gì sai với truy vấn ít hơn ngày này?
- 10. ViewPager Circular với ít hơn 4 lượt xem
- 11. Nhận tên cột của thuộc tính được ánh xạ với Hibernate
- 12. Assetic Symfony2 ít hơn + nén bộ lọc
- 13. Chức năng lọc cho ít hơn + F
- 14. Twitter Bootstrap và ít tệp hơn
- 15. Đường ray: Sử dụng lớn hơn/ít hơn với tuyên bố ở đâu
- 16. Mongo db truy vấn giá trị mảng với hơn và ít hơn
- 17. Tại sao cấu trúc tốt hơn với ít hơn 16 byte
- 18. nhầm lẫn về việc sử dụng std :: ít hơn và std :: lớn hơn với std :: sort
- 19. Mở rộng bộ chọn thuộc tính với Ít hơn & Lớn hơn trong jQuery
- 20. Tạo BufferedImage sử dụng RAM ít hơn?
- 21. ngày php ít hơn một ngày khác
- 22. CHỨA với nhiều điều kiện hơn nhiều cột
- 23. Hibernate - hibernate.hbm2ddl.auto = xác nhận
- 24. Hiệu quả giữa con trỏ và mảng (hướng dẫn lắp ráp ít hơn không mất ít thời gian hơn)
- 25. Có cách nào để nhận giá trị phần tử khác trong Ít hơn không?
- 26. Trường Máy chủ SQL Nhận ngày tháng nếu ít hơn 3 tháng
- 27. Hibernate và MS SQL Server Identity cột
- 28. Nhiều bộ điều khiển hơn nhưng ít hoạt động hơn hoặc ít bộ điều khiển hơn nhưng nhiều hành động hơn
- 29. chức năng ngẫu nhiên: giá trị cao hơn xuất hiện ít thường xuyên hơn thấp hơn
- 30. Compojure hoặc Noir cho một webservice UI-ít hơn?
@Pascal Thivent tôi không thể để lại 2 trường trong lớp miền và tệp ánh xạ của mình? –
@Gandalf Vâng, tôi nghĩ rằng ai đó đang sử dụng các lĩnh vực khác. Nếu điều này không đúng, thì bạn thực sự có thể thay đổi thực thể hiện tại của bạn. –
Cảm ơn bạn đã có nhiều giải pháp và giải thích, làm cách nào để bạn nghĩ ra được điều đó? hết hạn? đọc sách, đào tạo? Tôi sẽ chấp nhận câu trả lời của bạn.nếu bạn có thể chỉ cho tôi đúng hướng nó sẽ là tuyệt vời, như: trang web, ví dụ, sách. –