簡體   English   中英

每次加載頁面時,如何使用 Hibernate 在數據庫中保存自動增量計數?

[英]Each time a page loads, how do I save the Auto Increment count in a database using 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);
    }
}

道類


public class OrderDaoImpl implements OrderDao{

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public Order addOrder(Order order) {
        sessionFactory.getCurrentSession().saveOrUpdate(order);
        return order;
    }

有人可以幫我弄清楚如何將它鏈接到數據庫嗎?

桌子

你在這里犯了很多錯誤。

  1. 您不需要返回訂單(DAO 和服務)。
  2. 在控制器中,您正在創建一個新的 Order 對象。 這意味着它是一個空對象。

由於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;
    }

}

這是粗略鍵入的代碼。 請嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM