Về cơ bản, tôi đang tìm kiếm chú thích loại "@Ignore" mà tôi có thể dừng một trường cụ thể để không bị giữ lại. Làm thế nào điều này có thể đạt được?JPA cách nhanh nhất để bỏ qua một trường trong thời gian tồn tại?
Trả lời
@Transient
phù hợp với nhu cầu của bạn.
Để bỏ qua một trường, hãy chú thích trường đó bằng @Transient
để nó sẽ không được ánh xạ theo chế độ ngủ đông.
Nguồn: Hibernate Annotations.
Câu trả lời này hơi trễ một chút, nhưng nó hoàn thành phản hồi.
Để tránh một trường từ một thực thể để được tiếp tục tồn tại DB ai có thể sử dụng một trong hai cơ chế:
@Transient - chú thích JPA đánh dấu một lĩnh vực như không persistable
transient từ khóa trong java. Cẩn thận - bằng cách sử dụng từ khóa này, sẽ ngăn chặn trường được sử dụng với bất kỳ cơ chế tuần tự hóa nào từ java. Vì vậy, nếu trường phải được tuần tự hóa, bạn chỉ nên sử dụng chú thích @Transient.
làm thế nào về tôi chỉ muốn bỏ qua sự kiên trì trên phương pháp get ?. Ví dụ: myjparepository.save() wil lưu mô hình như bình thường, và myjparepository.find (id) sẽ bỏ qua trường mà tôi muốn? – xtiger
không biết nếu có thể. Xin lỗi –
Để hoàn thành các câu trả lời ở trên, tôi đã có trường hợp sử dụng một tập tin bản đồ XML là nơi chẳng những @Transient
cũng không transient
làm việc ... tôi đã phải đặt các thông tin thoáng qua trong file xml:
<attributes>
(...)
<transient name="field" />
</attributes>
Để bỏ qua một trường, chú thích trường đó bằng @Transient
do đó nó sẽ không được ánh xạ bởi chế độ ngủ đông.
nhưng sau đó jackson sẽ không tuần tự hóa trường khi chuyển đổi sang JSON.
Nếu bạn cần trộn JPA với JSON (bỏ qua bởi JPA nhưng vẫn bao gồm ở Jackson) sử dụng @JsonInclude
:
@JsonInclude()
@Transient
private String token;
Bạn cũng có thể sử dụng JsonInclude.Include.NON_NULL và ẩn trường trong JSON trong deserialization khi token == null
:
@JsonInclude(JsonInclude.Include.NON_NULL)
@Transient
private String token;
Tôi đang chạy JAX-RS 2.0.1/Jersey 2.25.1/Jackson 2.8.7 và với ngăn xếp đó '@ JsonInclude' là không cần thiết: các trường' @ Transient' vẫn được bao gồm trong JSON. (Bạn vẫn nhận được phiếu bầu của tôi: kỹ thuật tự nó có thể rất hữu ích trong các trường hợp khác). – DKroot
Không có câu trả lời nào ở trên phù hợp với tôi sử dụng Hibernate 5.2.10, Jersey 2.25.1 và Jackson 2.8.9. Tôi cuối cùng đã tìm thấy câu trả lời (loại, họ tham khảo hibernate4module nhưng nó hoạt động cho 5 quá) here. Không có chú thích Json nào hoạt động cả với @Transient
. Rõ ràng Jackson2 đủ 'thông minh' để vui lòng bỏ qua những thứ được đánh dấu bằng @Transient
trừ khi bạn nói rõ ràng là không. Chìa khóa là để thêm các module hibernate5 (mà tôi đã sử dụng để đối phó với các chú thích Hibernate khác) và vô hiệu hóa các tính năng USE_TRANSIENT_ANNOTATION
trong Application Jersey của tôi:
ObjectMapper jacksonObjectMapper = new ObjectMapper();
Hibernate5Module jacksonHibernateModule = new Hibernate5Module();
jacksonHibernateModule.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION);
jacksonObjectMapper.registerModule(jacksonHibernateModule);
Đây là sự phụ thuộc cho Hibernate5Module:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
<version>2.8.9</version>
</dependency>
Sau khi thử mọi phương pháp khác đề cập ở trên và những người khác '@ JsonProperty' ' @ JsonInclude' '@JsonSerialize + @ JsonDeserialize'' mapper.configure (MapperFeature.PROPAGATE_TRANSIENT_MARKER, false)); ' giải pháp này cuối cùng làm việc. Cảm ơn! – Aceonline
- 1. Thời gian tồn tại của thời gian
- 2. Làm cách nào để bỏ qua thời gian trong NSDate?
- 3. thời gian trôi qua nhanh trên linux
- 4. Cách nhanh chóng để xác định xem một trường tồn tại trong bảng ORACLE
- 5. Cách nhanh nhất để chia một chuỗi nối vào một tuple và bỏ qua chuỗi rỗng
- 6. Tại sao chụp nhanh Windows mất một thời gian dài?
- 7. hibernate jpa criteriabuilder bỏ qua truy vấn trường hợp
- 8. Mô phỏng thời gian bỏ qua
- 9. Kiểm tra nhanh nhất nếu hàng tồn tại trong PostgreSQL
- 10. Cách tạo trường Ngày/dấu thời gian được tạo tự động trong Play!/JPA?
- 11. Cách ánh xạ cột dấu thời gian thành loại JPA?
- 12. PHP file_get_contents bỏ qua thời gian chờ?
- 13. Truy vấn nhanh nhất để kiểm tra sự tồn tại của một hàng trong Oracle?
- 14. Trong Java, cách nhanh nhất để có được thời gian hệ thống là gì?
- 15. Bỏ qua tải xuống nếu tệp tồn tại trong wget?
- 16. Làm cách nào để nhanh chóng nhóm cột thời gian trong một khung dữ liệu thành các khoảng thời gian?
- 17. Thuật toán giải nén thời gian thực nhanh nhất
- 18. Java - Cách nhanh nhất để kiểm tra xem URL có tồn tại không?
- 19. Chức năng bỏ qua nếu mất quá nhiều thời gian
- 20. Cách nhận Mã số của thực thể tồn tại lâu nhất bằng cách sử dụng JPA
- 21. Rails: Bỏ qua thuộc tính không tồn tại thông qua để tạo ra()
- 22. Làm cách nào để chỉ kiểm tra thời gian trên các trường ngày giờ nhưng bỏ qua ngày?
- 23. JPA tồn tại nhiều đến nhiều
- 24. Cách tính thời gian trôi qua của một hàm?
- 25. Làm thế nào để thực hiện một bảng thời gian bằng cách sử dụng JPA?
- 26. TSQL: Ngày GIỮA Truy vấn - Bỏ qua Thời gian
- 27. Cách nhanh chóng để xác định xem một PID có tồn tại trên (Windows) không?
- 28. Làm cách nào để bỏ qua toàn bộ mô-đun unittest của Python tại thời gian chạy?
- 29. CURL đa treo/bỏ qua thời gian chờ
- 30. Có cách nào để vượt qua đối tượng tách ra để JPA tồn tại không? (thực thể tách rời được chuyển sang tồn tại)
Nhưng sau đó jackson sẽ không serialize trường khi chuyển đổi sang JSON ... làm thế nào để giải quyết? – MobileMon
tùy thuộc vào ứng dụng của bạn.nếu bạn chú thích lớp thực thể của bạn - nó áp dụng ở khắp mọi nơi; nhưng nếu bạn anotate dao mà sử dụng thực thể - đó là một câu chuyện khác. trong ngắn hạn: sử dụng DAO khi bạn có nhiều kho – Sarief
@MobileMon kiểm tra câu trả lời của tôi bên dưới về jackson – user3871754