public void doWork(Session session) throws Exception {
   XorShiftRandom rng = new XorShiftRandom(seeder.nextInt());
   Order order = new Order();
   session.persist(order);
   for (int i = 0; i < 10; i++) {
     int productId = rng.nextInt() & 1023;
     Product product = (Product) session.get(Product.class, productId);
     OrderLine orderLine = new OrderLine();
     orderLine.setOrder(order);
     orderLine.setProduct(product);
     session.persist(orderLine);
     order.getOrderLines().add(orderLine);
   }
 }
        public void doWork(Session session) throws Exception {
          @SuppressWarnings("unchecked")
          List<Order> chargedOrders =
              session.createCriteria(Order.class).add(Restrictions.eq("state", 2)).list();

          for (Order order : chargedOrders) {
            order.setState(3);
            for (OrderLine orderLine : order.getOrderLines()) {
              Product product = orderLine.getProduct();
              product.setQuantity(product.getQuantity() - 1);
              session.update(product);
            }
            session.update(order);
          }
        }
        public void doWork(Session session) throws Exception {
          @SuppressWarnings("unchecked")
          List<Order> pendingOrders =
              session.createCriteria(Order.class).add(Restrictions.eq("state", 1)).list();

          for (Order order : pendingOrders) {
            order.setState(2);
            int charge = 0;
            for (OrderLine orderLine : order.getOrderLines()) {
              charge += orderLine.getProduct().getPrice();
            }
            order.setCharge(charge);
            session.update(order);
          }
        }