0

When using this sequence based custom ID generator in hibernate, how to get current saved ID value when doing a transaction?

Here is my custom IdGenerator

IdGenerator.java

public class IdGenerator extends SequenceStyleGenerator {

    public static final String VALUE_PREFIX_PARAMETER = "valuePrefix";
    public static final String VALUE_PREFIX_DEFAULT = "";
    private String valuePrefix;

    public static final String NUMBER_FORMAT_PARAMETER = "numberFormat";
    public static final String NUMBER_FORMAT_DEFAULT = "%d";
    private String numberFormat;

    @Override
    public Serializable generate(SharedSessionContractImplementor session,
                                 Object object) throws HibernateException {
        return valuePrefix + String.format(numberFormat, super.generate(session, object));
    }

    @Override
    public void configure(Type type, Properties params,
                          ServiceRegistry serviceRegistry) throws MappingException {
        super.configure(LongType.INSTANCE, params, serviceRegistry);
        valuePrefix = ConfigurationHelper.getString(VALUE_PREFIX_PARAMETER,
                params, VALUE_PREFIX_DEFAULT);
        numberFormat = ConfigurationHelper.getString(NUMBER_FORMAT_PARAMETER,
                params, NUMBER_FORMAT_DEFAULT);
    }
}

Here is my Transaction

Supplier_Order_Detail.java

     @Autowired
        private SupplierOrderRepo supplierOrderRepo;
    
        @Autowired
        private SupplierOrderDetailRepo supplierOrderDetailRepo;
    
        @Autowired
        private ProductDetailRepo productDetailRepo;
        @Autowired
        private SupplierRepo supplierRepo;
    
        @Override
        @Transactional
        public Map<String, Boolean> placeSupplierOrder(PlaceSupplierOrderDTO placeSupplierOrderDTO) {
    
            Map<String, Boolean> map = new HashMap<>();
            SupplierOrder supplierOrder = new SupplierOrder();
    
         supplierOrder.setSupplier(supplierRepo.getOne(placeSupplierOrderDTO.getSupplierID()));
                supplierOrder.setSupplierOrderID(placeSupplierOrderDTO.getSupplierOrderID());
                Date currentDate = new Date();
                supplierOrder.setAddTime(currentDate);
                supplierOrder.setSupplierOrderDate(currentDate);
                supplierOrderRepo.save(supplierOrder);
        
    for (ProductOrderDTO productOrder : placeSupplierOrderDTO.getProductList()) {
            SupplierOrderDetails supplierOrderDetails = new SupplierOrderDetails();
    
            supplierOrderDetails.setProductDetails(productDetailRepo.getOne(productOrder.getBatchID()));
            supplierOrderDetails.setSupplierOrder(supplierOrderRepo.getOne("SO000001")); 
            supplierOrderDetails.setOrderedQty(productOrder.getOrderedQty());
            supplierOrderDetailRepo.save(supplierOrderDetails);
        }
        map.put("placesupplierordered", Boolean.TRUE);
        return map;
}
Jens Schauder
  • 77,657
  • 34
  • 181
  • 348

0 Answers0