0

我的 CRUD 过程中有错字。我无法在以 Oracle 11g 命名的数据库中插入日期类型。

当我尝试插入数据时,控制台上出现错误。

Field error in object 'employee' on field 'registerDate': rejected value [2019-09-11]; codes [typeMismatch.employee.registerDate,typeMismatch.registerDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [employee.registerDate,registerDate]; arguments []; default message [registerDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'registerDate'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.validation.constraints.NotNull @javax.persistence.Temporal @javax.persistence.Column java.util.Date] for value '2019-09-11'; nested exception is java.lang.IllegalArgumentException]

我该如何解决?

员工论坛

<form action="#" th:action="@{/employees/save}"
                         th:object="${employee}" method="POST">
...

<input type="date" name="date" th:field="*{registerDate}"
                    class="form-control mb-4 col-4" placeholder="Register Date">

</form>

员工对象

@NotNull(message="is required")
@Temporal(TemporalType.DATE)
@Column(name="REGISTER_DATE")
private Date registerDate;

控制器类

@PostMapping("/save")
    public String saveEmployee(@ModelAttribute("employee") Employee theEmployee,@RequestParam("date") String date) throws IOException, ParseException {

   // Date
   SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
   Date registerDate = dateformat.parse(String.valueOf(date));

   System.out.println("/save | registerDate : " + registerDate);

   theEmployee.setRegisterDate(registerDate); 

   // save the employee
   employeeService.save(theEmployee);
}
4

1 回答 1

1

也许您需要为 Oracle 格式化日期,例如:

@DateTimeFormat(pattern = "hh:mm aa")
@Column(name = "date_start")
private Date dateStart;
于 2019-09-11T22:26:40.983 回答