Tôi có API RESTful sử dụng lớp thực thể được chú thích với @EntityListners. Và trong EntityListner.java, tôi có một phương thức được chú thích bằng @PostPersist. Vì vậy, khi sự kiện đó kích hoạt, tôi muốn trích xuất tất cả thông tin liên quan đến thực thể vừa được lưu vào cơ sở dữ liệu. Nhưng khi tôi cố gắng làm điều đó, Glassfish đang tạo ra một ngoại lệ và phương thức trong lớp EntityListner không thực hiện như mong đợi. Đây là mãcách sử dụng các sự kiện vòng đời JPA để lấy dữ liệu thực thể
public class EntityListner {
private final static String QUEUE_NAME = "customer";
@PostUpdate
@PostPersist
public void notifyOther(Customer entity){
CustomerFacadeREST custFacade = new CustomerFacadeREST();
Integer customerId = entity.getCustomerId();
String custData = custFacade.find(customerId).toString();
String successMessage = "Entity added to server";
try{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// channel.basicPublish("", QUEUE_NAME, null, successMessage .getBytes());
channel.basicPublish("", QUEUE_NAME, null, custData.getBytes());
channel.close();
connection.close();
}
catch(IOException ex){
}
finally{
}
}
}
Nếu tôi gửi tin nhắn nhận xét ra successMessage thay vì custData, mọi thứ đều hoạt động tốt.
http://www.objectdb.com/java/jpa/persistence/event nói những điều sau đây liên quan đến phương pháp vòng đời thực thể và tôi tự hỏi nếu đó là tình huống ở đây.
Để tránh xung đột với những hoạt động cơ sở dữ liệu ban đầu mà cháy sự kiện tổ chức vòng đời (mà vẫn đang tiến hành) các phương thức callback không nên gọi EntityManager hoặc Query phương pháp và không nên truy cập vào bất kỳ tổ chức nào khác các đối tượng
Ý tưởng nào?
Ngoại lệ bạn đang nhận được là gì? –
Bao gồm ngoại lệ và theo dõi ngăn xếp. – James