【问题标题】:HTTP Status 400 – Bad Request when try to save Date to Data BaseHTTP 状态 400 - 尝试将日期保存到数据库时出现错误请求
【发布时间】:2017-07-23 19:21:08
【问题描述】:

JSP 页面:

<form:input path="comment"/><br>
<form:input path="date"/><br>
<input type="submit" value="Submit"/>

控制器:

 @PostMapping("/saveVisit")
public String saveVisit(@ModelAttribute Visit visit){
    visitService.addVisit(visit);
    return "redirect:/visit/list";
}

和休眠会话:

 @Override
@Transactional
public void addVisit(Visit visit) {
    Session session = sessionFactory.getCurrentSession();
    session.save(visit);
}

它在没有日期输入时有效,因为它可以为 NULL。

如何预先输入日期并将其保存在Java对象java.util.date中,然后将其保存到数据库中?

【问题讨论】:

标签: java hibernate date spring-mvc


【解决方案1】:

在步骤下方。

  1. 创建日期类型的列

    @Column(name = "DATEOFBIRTH", nullable = false, length = 32)
    private Date dateOfBirth;
    

使用旧 API 2a.使用SimpleDateFormat将作为输入接收的字符串转换为日期

    public static Date convertStringToDate(String dateInString) {
        SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
        Date date = null;
        try {
            date = formatter.parse(dateInString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

将返回的日期与其他数据一起保存到数据库

仅对日期使用新 API

2b. String str = "01/01/2015";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
        LocalDate dateTime = LocalDate.parse(str, formatter);
        System.out.println(dateTime.format(formatter)); // not using toString

对日期时间使用新 API

2c. String str = "01/01/2015 12:32:21";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
        System.out.println(dateTime.format(formatter)); // not using toString

【讨论】:

  • 难道没有办法避免过时的类DateSimpleDateFormat?可以用java.time代替吗?
  • 我认为是的,我会在我尝试后发布答案
猜你喜欢
  • 2018-02-01
  • 2019-09-13
  • 2017-09-07
  • 2021-02-11
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
相关资源
最近更新 更多