在我的Java应用程序中,我希望在持久化对象时监听事件,即添加到数据库中。然后我使用这个持久化对象的id来执行一些查询。这是代码
@Component
public class DataCreationListener extends EnversPostInsertEventListenerImpl {
private static final long serialVersionUID = 1L;
@Autowired
DataService DataService;
public DataCreationListener() {
super(null);
}
@Override
public void onPostInsert(PostInsertEvent event) {
if (event.getEntity() instanceof DataDAO) {
//Here I use the info from event.getEntity() to perform some queries.
Data Data = DataService.fromDao((DataDAO) event.getEntity());
// other stuff
}
}
}
但是,由于尚未保存已触发事件的对象,因此查询会引发异常。如果收听者名称为onPostInsert
,我希望在已经在dB中输入条目时触发,但事实并非如此。在调试时,我看到一旦控件流出侦听器,那么对象就会被保存。
有没有什么方法可以让我在这里获得所需的功能,即在保存对象时让听众触发,或者以可靠和安全的方式以某种方式做到这一点?有人能指出我正确的方向。谢谢!!