Tôi đang cố gắng thiết lập ứng dụng ngủ đông của mình để duy trì một thực thể Notification
mới mỗi Activity
Thực thể được tạo ra - tại thời điểm này, mọi thứ tôi đã cố gắng Notification
không thể im lặng (không có lỗi trong nhật ký nhưng sql không bao giờ được thực thi) .Có thể duy trì các thực thể mới trong Trình nghe @ Pre/PostPersist không?
Có ai có thể xác nhận rằng thậm chí có thể duy trì các thực thể bổ sung trong trình lắng nghe trước/sauPersist Hibernate không?
Tôi đã đọc trong tài liệu:
Một phương pháp gọi lại không được gọi EntityManager hoặc Query phương pháp!
Nhưng tôi đã đọc một số chủ đề thảo luận khác dường như chỉ ra rằng điều đó là có thể.
Để tham khảo, hai cách tiếp cận tôi đã cố gắng là:
@PrePersist
phương pháp - thiết lập một mối quan hệ giữa cascade.ALLActivity
vàNotification
, và trong phương pháp PrePersist chỉ đơn giản là tạo ra một mớiNotification
và liên kết nó tới cácActivity
được tạo ra với hy vọng rằngNotification
sẽ được duy trì.@PostPersist
phương pháp - sử dụng@Configurable
và ListenerClass, hệ thống dây điện trong một dịch vụ và tạo ra mộtNotification
thực thể mới và sau đó gọi một cách rõ ràng entityManger vẫn tồn tại
Ai đó có thể xác nhận những gì tôi đang cố gắng là có thể?
Cảm ơn - Tôi cần thêm Thông báo vào phương thức pre/postPersist vì tôi muốn chắc chắn rằng mỗi khi một Hoạt động được tạo, một Thông báo tương ứng cũng được tạo. Nếu bạn coi Thông báo là đối tượng kiểm toán cần được đảm bảo, thì giải pháp đầu tiên có nguy cơ ai đó có thể gọi em.persist (hành động); bất cứ nơi nào khác trong codebase (một lô/lớp hoạt động hoặc chỉ bất kỳ lớp dịch vụ khác) và trừ khi họ cũng thêm mã thông báo sau đó chúng tôi không nhận được kiểm toán của chúng tôi. Giải pháp thứ hai là những gì tôi đã thử cho phương pháp tiếp cận của tôi 1) trong bài đăng gốc nhưng không hoạt động âm thầm. – rhinds
@rhinds Tôi vừa cập nhật câu trả lời của mình. Bạn có thể tạo liên kết trong hàm tạo của Activity. –
cảm ơn, tôi sẽ cố gắng này - mặc dù nó vẫn có vẻ như nó sẽ không được lý tưởng như vẫn sẽ được mở để chỉnh sửa trước khi sự bền bỉ. Có vẻ như trước đây vẫn là nơi thích hợp để thực hiện loại hoạt động này, ví dụ, trước đây chúng tôi đã sử dụng phương pháp prePersist để đặt ngày sửa đổi của tất cả các đối tượng và có nghĩa là ngày sửa đổi không bao giờ có thể được thay đổi hoặc ghi đè theo cách thủ công – rhinds