Этот метод используется для создания и сохранения родительских и дочерних записей, но сохраняет только один дочерний элемент.
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;
}
В базе данных сохраняется родительский элемент, а первый дочерний элемент сохраняется, а второй дочерний элемент сохраняется как нулевой.