HTTP状态400 - 尝试将日期保存到数据库时的错误请求

时间:2017-07-23 19:21:09

标签: java hibernate date spring-mvc

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";
}

和Hibernate Session:

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

当没有日期输入时它起作用,因为它可以是NULL。

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

1 个答案:

答案 0 :(得分:1)

在步骤之下。

  1. 创建日期类型

    的列
    @Column(name = "DATEOFBIRTH", nullable = false, length = 32)
    private Date dateOfBirth;
    
  2. 使用旧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