Родительская запись и первый дочерний элемент сохраняются в базе данных, но второй дочерний элемент сохраняется как нулевой - PullRequest
0 голосов
/ 13 марта 2019

Этот метод используется для создания и сохранения родительских и дочерних записей, но сохраняет только один дочерний элемент.

public PurchaseResponse saveHeaderItem(PurchaseOrderHeaderDto head)
{
    try
    {
        session=sessionfactory.getCurrentSession();
        transaction=session.beginTransaction();
        PurchaseOrderHeader Head=importDto1(head);
        createParent(Head);
        for (int i = 0; i < Head.getPurchaseOrderItemlist().size(); i++)
        {
            Head.getPurchaseOrderItemlist().get(i).setHeaderDetails(Head);
            createChild(Head.getPurchaseOrderItemlist().get(i));

            //session.save(Head.getPurchaseOrderItemlist().get(i));
        }
        if(transaction.isActive())
            transaction.commit();
        session.close();

        purchaseresponse.setMessage("both Successfull");
        purchaseresponse.setStatus("200");
        return purchaseresponse;
    }
    catch(Exception e)
    {
        System.err.println("both"+e.getMessage());
        purchaseresponse.setMessage("both UnSuccessfull");
        purchaseresponse.setStatus("500");
        return purchaseresponse;
    }
}

Этот метод вызывается для сохранения родительского элемента:

public PurchaseResponse createParent(PurchaseOrderHeader head)
{
    try
    {
        session=sessionfactory.getCurrentSession();
        transaction=session.beginTransaction();
        if(head.getPayment_terms() instanceof String)
        {
            //  payment=(String) header.getPayment_terms();
            System.err.println(head);
            head.setPayment_terms(head.getPayment_terms());
        }

        if(head.getStatus() instanceof String)
        {
            //  status=(String) header.getStatus();
                System.err.println(head);
            head.setStatus(head.getStatus());
        }

        if(head.getVendor() instanceof String)
        {
            //  vendor=(String) header.getVendor();
            System.err.println(head);
            head.setVendor(head.getVendor());
        }
        session.save(head);
        if(transaction.isActive())
            transaction.commit();
        purchaseresponse.setMessage("parent Successfull");
        purchaseresponse.setStatus("200");

        session.close();
        return purchaseresponse;
    }
    catch(Exception e)
    {
        System.err.println("parent"+e.getMessage());
        purchaseresponse.setMessage("parent UnSuccessfull");
        purchaseresponse.setStatus("500");
        session.close();
        return purchaseresponse;
    }

}

Thisвызывается метод для хранения дочернего элемента:

public PurchaseResponse createChild(PurchaseOrderItem purchaseOrderItem)
{
    session=sessionfactory.getCurrentSession();
    transaction=session.beginTransaction();
    System.err.println(purchaseOrderItem);
    try
    {

        if(purchaseOrderItem.getItemName() instanceof String)
        {
            purchaseOrderItem.setItemName(purchaseOrderItem.getItemName());
        }
        session.save(purchaseOrderItem);
        //if(transaction.isActive())
            transaction.commit();
        session.close();
        purchaseresponse.setMessage("child successfull");
        purchaseresponse.setStatus("200");
        return purchaseresponse;

    }
    catch(Exception e)
    {
        System.err.println("child"+e.getMessage());
        transaction.rollback();
        purchaseresponse.setMessage("child Unsuccessfull");
        purchaseresponse.setStatus("500");
    }
    return purchaseresponse;
}

В базе данных сохраняется родительский элемент, а первый дочерний элемент сохраняется, а второй дочерний элемент сохраняется как нулевой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...