Каждый раз, когда загружается страница, как сохранить счетчик автоматического приращения в базе данных с помощью Hibernate?

#java #mysql #spring-boot #hibernate

Вопрос:

У меня есть этот класс сущностей, таблица создается, но я не могу заполнить ее данными.

 @Entity @Table(name = "app_form_order_Id") public class Order implements Serializable {  private static final long serialVersionUID = 1L;   @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  @Column(name = "orderId")  private Integer orderId;    public Integer getOrderId() {  return orderId;  }   public void setOrderId(Integer orderId) {  this.orderId = orderId;  }  }  

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

 @RequestMapping(value = "/ajax/form/{formId}/load", method = RequestMethod.GET) public @ResponseBody AjaxResponseBean loadForm(HttpSession session, @PathVariable Integer formId, @RequestBody AjaxRequestBean request) {  .  .  if (!"designer".equals(request.getData().getMode())){  Order order = new Order();  }  .  . }  

Это класс обслуживания

  public class OrderServiceImpl implements OrderService{   @Autowired  private OrderDao orderDao;   @Transactional(propagation = Propagation.REQUIRED, readOnly = false)  public Order addOrder(Order orderId) {  return orderDao.addOrder(orderId);  } }   

Класс Dao

  public class OrderDaoImpl implements OrderDao{   @Autowired  private SessionFactory sessionFactory;   @Override  public Order addOrder(Order order) {  sessionFactory.getCurrentSession().saveOrUpdate(order);  return order;  }   

Кто-нибудь может помочь мне понять, как связать его с базой данных?

стол

Комментарии:

1. Можете ли вы показать нам класс обслуживания?

2. И класс ДАО, пожалуйста. Пожалуйста, отредактируйте свой вопрос с помощью класса обслуживания и класса DAO

3. Взгляните, я отредактировал сообщение

Ответ №1:

Здесь вы совершили много ошибок.

  1. Вам не нужно возвращать заказ обратно (DAO и сервис).
  2. В контроллере вы создаете новый объект заказа. Это означает, что это пустой объект.

Так orderId как он автоматически увеличивается, здесь я отредактировал его, чтобы добавить lastUpdate .

Класс DAO

 public class OrderDaoImpl implements OrderDao{   @Autowired  private SessionFactory sessionFactory;   @Override  public void addOrder(Order order) {  sessionFactory.getCurrentSession().saveOrUpdate(order);    }  

Класс обслуживания

 public class OrderServiceImpl implements OrderService{   @Autowired  private OrderDao orderDao;   @Transactional(propagation = Propagation.REQUIRED, readOnly = false)  public void addOrder(Order order) {  orderDao.addOrder(order);  } }  

Контроллер

 @RequestMapping(value = "/ajax/form/{formId}/load", method = RequestMethod.GET) public @ResponseBody AjaxResponseBean loadForm(HttpSession session, @PathVariable Integer formId, @RequestBody AjaxRequestBean request) { if (!"designer".equals(request.getData().getMode())){  Order order = new Order();  order.setLastUpdate(new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()););  orderServiceImpl.addOrder(order);  } }  

Класс Бобовых

 @Entity @Table(name = "app_form_order_Id") public class Order implements Serializable {  private static final long serialVersionUID = 1L;   @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  @Column(name = "orderId")  private Integer orderId;    @Column(name = "lastUpdate")  private Date lastUpdate;    public Integer getOrderId() {  return orderId;  }   public void setOrderId(Integer orderId) {  this.orderId = orderId;  }    public Date getLastUpdate() {  return lastUpdate;  }   public void setLastUpdate(Date lastUpdate) {  this.lastUpdate = lastUpdate;  }  }  

Это примерно набранный код. Пожалуйста, попробуйте.