Java 在Spring Mvc 3Hibernate中未执行保存

Java 在Spring Mvc 3Hibernate中未执行保存,java,mysql,hibernate,spring-mvc,Java,Mysql,Hibernate,Spring Mvc,文章类别: package net.devmanuals.model; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistenc

文章
类别:

package net.devmanuals.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;

    @Entity
    @Table(name = "imei")
    public class Article {
    @Id
        @Column(name = "imei1",nullable = false)
    private Long imeiNo;
        @Column(name = "date_added")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date addedDate;

    public Article() {      
    }

        public Long getimei1() {
        return imeiNo;
    }

    public void setimei1(Long imei1) {
        this.imeiNo = imeiNo;
    }

        public Date getAddedDate() {
        return addedDate;
    }

    public void setAddedDate(Date addedDate) {
        this.addedDate = addedDate;
    }   
}
package net.devmanuals.controller;

import java.util.HashMap;
import java.util.Map;

import net.devmanuals.model.Article;
import net.devmanuals.service.ArticleService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/articles")
public class ArticleController {

    @Autowired
    private ArticleService articleService;

    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public ModelAndView saveArticle(@ModelAttribute(" article") Article  article,
            BindingResult result) {
         articleService.addArticle( article);
        return new ModelAndView("redirect:/articles.html");
    }

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView listArticles() {

    Map<String, Object> model = new HashMap<String, Object>();
        model.put("articles",  articleService.listArticles());

        return new ModelAndView("articlesList", model);
    }

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public ModelAndView addArticle(@ModelAttribute("article") Article article,
            BindingResult result) {
        return new ModelAndView("addArticle");
    }

}
ArticleController
class:

package net.devmanuals.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;

    @Entity
    @Table(name = "imei")
    public class Article {
    @Id
        @Column(name = "imei1",nullable = false)
    private Long imeiNo;
        @Column(name = "date_added")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date addedDate;

    public Article() {      
    }

        public Long getimei1() {
        return imeiNo;
    }

    public void setimei1(Long imei1) {
        this.imeiNo = imeiNo;
    }

        public Date getAddedDate() {
        return addedDate;
    }

    public void setAddedDate(Date addedDate) {
        this.addedDate = addedDate;
    }   
}
package net.devmanuals.controller;

import java.util.HashMap;
import java.util.Map;

import net.devmanuals.model.Article;
import net.devmanuals.service.ArticleService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/articles")
public class ArticleController {

    @Autowired
    private ArticleService articleService;

    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public ModelAndView saveArticle(@ModelAttribute(" article") Article  article,
            BindingResult result) {
         articleService.addArticle( article);
        return new ModelAndView("redirect:/articles.html");
    }

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView listArticles() {

    Map<String, Object> model = new HashMap<String, Object>();
        model.put("articles",  articleService.listArticles());

        return new ModelAndView("articlesList", model);
    }

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public ModelAndView addArticle(@ModelAttribute("article") Article article,
            BindingResult result) {
        return new ModelAndView("addArticle");
    }

}
保存数据时出现此错误(但显示数据时无错误):


例外说明了一切。在持久化实体之前,必须为其分配ID。因此,在调用
persist()
之前,只需调用一个设置
imeiNo
值的方法。不幸的是,你没有这样的方法。唯一一个看起来像这样的设置器的是以下设置器:

public void setimei1(Long imei1) {
    this.imeiNo = imeiNo;
}
但是,它不仅名称不正确(应该称为
setImeiNo
),而且它还有一个明显的缺陷:它完全忽略其参数,并将
imeiNo
的值设置为它已经拥有的值

考虑到你的能手和二传手都一团糟,我的建议是:

  • 把它们全部去掉
  • 使用IDE自动重新生成它们
设定者应为:

public void setImeiNo(Long imeiNo) {
    this.imeiNo = imeiNo;
}

为您设置一个自动递增的it模型,您不应该看到错误,也不需要自己添加id

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

代码太多,请发布。您需要一个Id生成方案。Dup:先生,我已经添加了@GeneratedValue,但知道还有其他错误。先生,实际上我想插入imei(即id手动而非自动生成)@MrD,我认为这会解决我的问题,因此我发布了3个类请帮助我手动输入id并保存数据好的,谢谢,我也会尝试这样做,你们都告诉过了,然后回复你们,,谢谢感谢所有人,实际上这是我的错误,,您是对的,先生@JB Nizet。我的错误是public void setimei1(Long imei1){this.imeiNo=imeiNo;},但是先生,我想在显示日期时也显示时间。在我的数据库中显示日期和时间,但不在浏览器中显示,请告诉我如何获得时间?如果您想获得日期和时间,您不认为TemporalType.TIMESTAMP比TemporalType.Date更合适吗?先生,您能告诉我如何一次在两个数据库中输入值吗??因为我必须在一个表中输入imei编号,在第二个表中输入imei以及日期和时间。我已经执行了第二个表的工作,但我不知道如何在两个表中同时输入值。如果您想访问@MatthiasLaug,请提供帮助,但实际上我需要手动添加id(即imei no)。还是谢谢