我有一个 RESTful API,它使用带有 @EntityListners 注释的实体类。在 EntityListner.java 中,我有一个用 @PostPersist 注释的方法。因此,当该事件触发时,我想提取有关刚刚保存到数据库中的实体的所有信息。但是当我尝试这样做时,Glassfish 正在生成一个异常,并且 EntityListner 类中的方法没有按预期执行。这是代码
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{
}
}
}
如果我发送注释掉的successMessage消息而不是custData,一切正常。
http://www.objectdb.com/java/jpa/persistence/event说以下关于实体生命周期方法的内容,我想知道这是否是这里的情况。
为避免与触发实体生命周期事件(仍在进行中)的原始数据库操作发生冲突,回调方法不应调用 EntityManager 或 Query 方法,并且不应访问任何其他实体对象
有任何想法吗?