I have master detail tables (InventoryReceiptsVendorH and InventoryReceiptsVendorD) and InventoryBalance. I have a listener as follows but noticed after debugging that the query is not returning any record to update the 3rd entity.
@Component("mydb_InventoryReceiptVendorHListener")
public class InventoryReceiptVendorHListener implements BeforeInsertEntityListener<InventoryReceiptVendorH>, AfterDeleteEntityListener<InventoryReceiptVendorH>, AfterInsertEntityListener<InventoryReceiptVendorH>, AfterUpdateEntityListener<InventoryReceiptVendorH> {
@Inject
private UniqueNumbersService unService;
@Inject
private Persistence persistence;
@Inject
private Metadata metadata;
@Override
public void onBeforeInsert(InventoryReceiptVendorH entity) {
entity.setDocNumber(unService.getNextNumber("ReceiptVendor_Number"));
entity.setMovementType("104");
}
@Override
public void onAfterDelete(InventoryReceiptVendorH entity) {
}
@Override
public void onAfterInsert(InventoryReceiptVendorH entity) {
insertEntries2(entity);
}
@Override
public void onAfterUpdate(InventoryReceiptVendorH entity) {
}
private void insertEntries2(InventoryReceiptVendorH operation) {
EntityManager em = persistence.getEntityManager();
TypedQuery<InventoryReceiptVendorD> query = em.createQuery("select e from mydb$InventoryReceiptVendorD e " +
"where e.inventoryReceiptVendorH.id = ?1 ", InventoryReceiptVendorD.class);
query.setParameter(1, operation.getId());
List<InventoryReceiptVendorD> lists = query.getResultList();
for(InventoryReceiptVendorD list : lists) {
InventoryTranDetail tranDetail = metadata.create(InventoryTranDetail.class);
tranDetail.setMovementType(operation.getMovementType());
tranDetail.setMaterial(list.getMaterial());
tranDetail.setQuantity(list.getQuantity());
tranDetail.setWarehouse(operation.getWarehouse());
em.persist(tranDetail);
}
}
Thanks for helping where i am making a mistake.