I am trying to update on the basis of old value in EntityLister but getting the following exception
java.lang.IllegalStateException: Query delegate has already been created
at com.haulmont.cuba.core.sys.QueryImpl.checkState(QueryImpl.java:188)
at com.haulmont.cuba.core.sys.QueryImpl.setQueryString(QueryImpl.java:553)
at com.haulmont.cuba.core.sys.QueryImpl.setQueryString(QueryImpl.java:51)
at com.company.listener.proc.BidInvitePrEntityListener.updateEntries(BidInvitePrEntityListener.java:82)
at com.company.listener.proc.BidInvitePrEntityListener.onBeforeUpdate(BidInvitePrEntityListener.java:38)
here is the service code:
private void updateEntries(BidInvitePr entity, EntityManager em) {
if(entity.getPurchaseRequisition() != null){
PurchaseRequisition oldPr = (PurchaseRequisition) persistence.getTools().getOldValue(entity, "purchaseRequisition");
TypedQuery<PurchaseRequisition> query = em.createQuery("select e from erp$PurchaseRequisition e " +
"where e.id = ?1", PurchaseRequisition.class);
query.setParameter(1, entity.getPurchaseRequisition().getId());
PurchaseRequisition pr = query.getFirstResult();
pr.setBidInvite(entity.getBidInvite());
if (oldPr != null) {
TypedQuery<PurchaseRequisition> queryOld = em.createQuery("select e from erp$PurchaseRequisition e " +
"where e.id = ?1", PurchaseRequisition.class);
queryOld.setParameter(1, oldPr.getId());
PurchaseRequisition prOld = queryOld.getFirstResult();
prOld.setBidInvite(null);
}
}
}
Thanks for any help.