Câu hỏi JPA. Làm thế nào để bỏ qua một số lĩnh vực chỉ trên hoạt động hợp nhất


Tôi muốn có các lĩnh vực: creationDate và updateDate trong Entity,

Tôi muốn các trường này được cập nhật trong db trên persist hoạt động. Nhưng tôi muốn lĩnh vực creationDate sẽ không được cập nhật vào merge hoạt động trong db.

Tôi đang tìm chú thích JPA như sau: @TransientOnMerge hoặc là @IgnoreOnMerge Nhưng không thể tìm thấy bất cứ điều gì.

Có thể không? Bạn có thể giúp?


9
2018-04-24 08:58


gốc


Câu trả lời cũng ở đây: stackoverflow.com/questions/29917148/… - masterdany88


Các câu trả lời:


bạn có thể thêm @Column (updatable = false) vào trường của thực thể.


11
2018-04-24 09:10



Nếu nó sẽ làm việc Nó sẽ giải quyết vấn đề của tôi. Tôi sẽ kiểm tra. Cảm ơn. - masterdany88
Nó hoạt động như một sự quyến rũ. Cảm ơn nhiều. - masterdany88
Điều này không làm việc tất cả các cách. Với updatable = false thiết lập, trường hợp được quản lý được trả về từ merge chức năng vẫn có các giá trị này bị ghi đè. Việc bỏ qua chỉ xảy ra ở cấp độ DB. Tôi muốn nhận phiên bản cập nhật của cá thể. Làm thế nào để làm điều đó? - Z.T. Yang


Bạn có thể làm việc với JPA EntityListener và cập nhật ngày của bạn trên @PrePersist hoặc là @PostPersist

PrePersist: Phương thức gọi lại này được gọi cho một thực thể đã cho trước   Trình quản lý thực thể tương ứng thực hiện hoạt động liên tục cho điều đó   thực thể.

PostPersist: Phương thức gọi lại này được gọi cho một thực thể đã cho sau   Trình quản lý thực thể tương ứng thực hiện hoạt động liên tục cho điều đó   thực thể.


1
2018-04-24 09:11



Đó là cách tốt. Trên @PreUpdate phương pháp tôi có thể nhận được từ db creationDate  và đặt nó cho đối tượng trước khi cập nhật. Hiệu ứng nào sẽ chính xác. Nhưng `@Column (updatable = false) là một cách tốt hơn tôi nghĩ. - masterdany88