Not so fast. You changed order of persist which are very important in this case. Ok I accpet your changes in model but try the folowwing order...I changed order of the begining ..of course order_inserts=false and works fine....
SaleDocumentItem saleDocumentItem = new SaleDocumentItem();
session.persist(saleDocumentItem);
SaleDocumentSummary saleDocumentsummary = new SaleDocumentSummary();
session.persist(saleDocumentsummary);
saleDocumentsummary.addItem(saleDocumentItem);
Product product = new Product();
session.persist(product);
saleDocumentItem.setProduct(product);
SaleDocument saleDocument = new SaleDocument();
session.persist(saleDocument);
saleDocument.addItem(saleDocumentItem);
SaleDocument correction = new SaleDocument();
session.persist(correction);
saleDocument.setCorerctionSubject(correction);