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)。还是谢谢