2016-11-08 13 views
3

私の春のアプリケーションは間違いがある保存「日付」に 『データベース』。に問題がある?[java.lang.Stringで]

enter image description here

エラー

タイプ[java.lang.String]のプロパティ値を に変更できませんでした。プロパティbornDateの必須型[java.sql.Date];ネストされた例外 はjava.lang.IllegalArgumentExceptionです:日付を解析できませんでした: 解読不可能な日付: "20 16-11-02"

のMySQL

use lifecalc; 
create table Man (
manId int not null auto_increment primary key, 
name varchar(30) not null, 
bornDate date, 
lastDate date 
); 
insert into man value 
(null, "Pawel Cichon", "1920-11-30", "2000-02-20"); 

エンティティ

@Entity 
@Table(name="Man") 
public class Man { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="manId") 
    private int manId; 

    @Column 
    private String name; 

    @DateTimeFormat(pattern = "yyyy-MM-dd") 
    @Column 
    private java.sql.Date bornDate; 

    @DateTimeFormat(pattern = "yyyy-MM-dd") 
    @Column 
    private java.sql.Date lastDate; 
    //getter end setter 

コントローラ

@Controller 
@RequestMapping("/") 
public class AppController { 

    @Autowired 
    private ManService manService; 

    @ModelAttribute("man") 
    public Man modelToAddMan(){ 
     return new Man(); 
    } 

    @InitBinder 
    public void initBinder(WebDataBinder binder) { 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/mm/dd"); 
     dateFormat.setLenient(false); 
     binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); 
    } 

    @RequestMapping(value="/addMan.html", method = RequestMethod.POST) 
    public String addManFinish(@Valid @ModelAttribute("man") Man man, BindingResult result) { 

     if(result.hasErrors()){ 
      return "addMan"; 
     } else{ 
      manService.addMan(man); 
      return "redirect:/index.html"; 
     } 
    } 

addMan.html

<form:form method="POST" modelAttribute="man"> 
    <div class="form-group"> 
     <label for="name" class="col-sm-2 control-label">name</label> 
     <form:input path="name" /> 
     <form:errors path="name" cssClass="error"/> 
    </div> 

    <div class="form-group"> 
     <label for="bornDate" class="col-sm-2 control-label">bornDate</label> 
     <form:input path="bornDate" /> 
     <form:errors path="bornDate" cssClass="error"/> 
    </div> 

    <div class="form-group"> 
     <label for="lastDate" class="col-sm-2 control-label">lastDate</label> 
     <form:input path="lastDate" /> 
     <form:errors path="lastDate" cssClass="error"/> 
    </div> 

    <div class="form-group"> 
     <input type="submit" class="btn btn-success" value="save" /> <a 
      class="btn btn-danger" role="button" 
      href="<spring:url value="/index.html" />">cancel </a> 
    </div> 
</form:form> 
+0

は、それはYYYY/MM/DDまたはYYY-MMです-dd? – mhasan

+0

"yyyy/mm/dd"は有効ではありません。 "yyyy/MM/dd" – mhasan

答えて

1

の代わりに:

@DateTimeFormat(pattern = "yyyy-MM-dd") 
@Column 
private java.sql.Date bornDate; 

使用java.util.date:あなたはaddMan.htmlから入力されたばかりしているかの日付形式

@DateTimeFormat(pattern = "yyyy-MM-dd") 
@Column 
private java.util.date bornDate; 
関連する問題