org.hibernate.Ausnahme.DataException: could not execute-Anweisung
Ich bin neu in Spring und Hibernate und bin ich die Entwicklung von E-Commerce-management-system und mein Problem ist der Upload der Dateien in die DB mit Hibernate. Ich habe einige service-aber ich sehe es nicht funktioniert.
hier ist mein code
domain
@Entity
@Table(name = "DEPUTES_APPEAL")
public class DeputesAppeal implements Serializable {
@Id
@Column(name = "ID")
@GeneratedValue
private long id;
@Column(name = "NumberOfAppeal")
private Integer number;
@Column(name = "DateOfIncomingAppeal")
private Date IncomingDate;
@Column(name = "NameOfDepute")
private String NameOfDepute;
@Column(name = "ResolutionOfChief")
private String ResolutionOfChief;
@Column(name = "TypeOfAppeal")
private String typeOfAppeal;
@OneToMany(mappedBy = "deputesAppeal", cascade =
CascadeType.ALL, fetch= FetchType.EAGER)
private final Set<UploadFiles> fileUpload = new HashSet<UploadFiles>
();
public DeputesAppeal(){}
public DeputesAppeal(int id, int number, Date incomingDate, String
nameOfDepute, String resolutionOfChief) {
this.id = id;
this.number = number;
this.IncomingDate = incomingDate;
this.NameOfDepute = nameOfDepute;
this.ResolutionOfChief = resolutionOfChief;
}
public long getId() {
return id;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
public Date getIncomingDate() {
return IncomingDate;
}
public void setIncomingDate(Date incomingDate) {
IncomingDate = incomingDate;
}
public String getNameOfDepute() {
return NameOfDepute;
}
public void setNameOfDepute(String nameOfDepute) {
NameOfDepute = nameOfDepute;
}
public String getResolutionOfChief() {
return ResolutionOfChief;
}
public void setResolutionOfChief(String resolutionOfChief) {
ResolutionOfChief = resolutionOfChief;
}
public String getTypeOfAppeal() {
return typeOfAppeal;
}
public void setTypeOfAppeal(String typeOfAppeal) {
this.typeOfAppeal = typeOfAppeal;
}
public Set<UploadFiles> getFileUpload() {
return fileUpload;
}
}
dao-Ebene, wo ich bin, speichern Sie das Objekt aus, dessen Feld von UploadFiles
public class MysqlImpl implements DeputesAppealDao{
@Autowired
SessionFactory sessionFactory;
public List<DeputesAppeal> getAll() {
Query query = sessionFactory.getCurrentSession().createQuery("from
DeputesAppeal");
return query.list();
}
public DeputesAppeal getById(Integer id) {
DeputesAppeal deputesAppeal = (DeputesAppeal)
sessionFactory.getCurrentSession().get(DeputesAppeal.class, id);
return deputesAppeal;
}
public void addAppeal(DeputesAppeal deputesAppeal,
CommonsMultipartFile[] fileUpload) {
if (fileUpload != null && fileUpload.length > 0) {
for (CommonsMultipartFile aFile : fileUpload) {
UploadFiles uploadFiles = new UploadFiles();
uploadFiles.setFileName(aFile.getOriginalFilename());
uploadFiles.setData(aFile.getBytes());
deputesAppeal.addFile(uploadFiles);
sessionFactory.getCurrentSession().save(deputesAppeal);
}
}
}
public void deleteAppeal(Integer id) {
DeputesAppeal deputesAppeal = (DeputesAppeal)
sessionFactory.getCurrentSession().get(DeputesAppeal.class, id);
sessionFactory.getCurrentSession().delete(deputesAppeal);
}
public void editAppeal(DeputesAppeal deputesAppeal, DeputesAppeal
existingDeputesAppeal) {
sessionFactory.getCurrentSession().save(existingDeputesAppeal);
}
public DeputesAppeal modSession(DeputesAppeal deputesAppeal) {
DeputesAppeal deputesAppeal1 = (DeputesAppeal)
sessionFactory.getCurrentSession().get(DeputesAppeal.class,
deputesAppeal.getId());
return deputesAppeal1;
}
public List<DeputesAppeal> abstractSearch(String searchingChar) {
Query query = sessionFactory.getCurrentSession().createQuery("from
DeputesAppeal where id = " + searchingChar);
return query.list();
}
}
und zumindest ist Controller
@Controller
@RequestMapping(value = "/main")
public class MainController {
@Qualifier("deputesAppealServiceBean")
@Autowired
DeputesAppealService deputesAppealService;
@RequestMapping(value = "/mainFrame", method = RequestMethod.GET)
public String getMainPage(){
return "mainPage";
}
@RequestMapping(value = "/resultOfSearching", method =
RequestMethod.GET)
public String getSearchResult(Model model,
@ModelAttribute("searchChar")String searchResult){
List<DeputesAppeal> deputesAppeals =
deputesAppealService.abstractSearch(searchResult);
model.addAttribute("ListOfAppeals", deputesAppeals);
return "searchingResultPage";
}
@RequestMapping(value = "mainFrame/new", method = RequestMethod.GET)
public String getAddNewAppealPage(){
return "addPage";
}
@RequestMapping(value = "mainFrame/new", method = RequestMethod.POST)
public String addNewAppeal(@ModelAttribute("Appeal")DeputesAppeal
deputesAppeal,
@RequestParam("fileUpload")CommonsMultipartFile[] fileUpload){
deputesAppealService.add(deputesAppeal, fileUpload);
return "mainPage";
}
@RequestMapping(value = "mainFrame/deleted", method =
RequestMethod.GET)
public String deleteAppeal(@RequestParam(value = "id", required =
true) Integer id, Model model){
deputesAppealService.delete(id);
model.addAttribute("id", id);
return "deletedPage";
}
@RequestMapping(value = "mainFrame/editPage", method =
RequestMethod.GET)
public String GetEdit(@RequestParam(value = "id", required = true)
Integer id, Model model){
model.addAttribute("editedAppeal",
deputesAppealService.getById(id));
return "editPage";
}
@RequestMapping(value = "mainFrame/editPage", method =
RequestMethod.POST)
public String editCurrentAppeal(@ModelAttribute("userAttribute")
DeputesAppeal deputesAppeal,@RequestParam(value = "id", required =
true)Integer id, Model model) {
deputesAppeal.setNumber(id);
deputesAppealService.edit(deputesAppeal);
model.addAttribute("id", id);
return "editedPage";
}
}
und wenn Sie auf der JSP-Seite habe ich ein submit-input-Daten, die ich mit dem nächsten Fehler
HTTP Status 500 - Request processing failed; nested exception is
org.springframework.dao.DataIntegrityViolationException: could not
execute statement; SQL [n/a]; nested exception is
org.hibernate.exception.DataException: could not execute statement
Domäne von UploadFiles
@Entity
@Table(name = "UploadFiles")
public class UploadFiles implements Serializable {
@Id
@GeneratedValue
@Column(name = "FILE_ID")
private long id;
@Column(name = "FILE_NAME")
private String fileName;
@Column(name = "FILE_DATA")
private byte[] data;
@ManyToOne
@JoinColumn(name = "ID")
private DeputesAppeal deputesAppeal;
public UploadFiles(){}
public UploadFiles(long id, String fileName, byte[] data){
this.id = id;
this.fileName = fileName;
this.data = data;
}
public long getId() {
return id;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public byte[] getData() {
return data;
}
public void setData(byte[] data) {
this.data = data;
}
public DeputesAppeal getDeputesAppeal() {
return deputesAppeal;
}
public void setDeputesAppeal(DeputesAppeal deputesAppeal) {
this.deputesAppeal = deputesAppeal;
}
- Dein problem liegt in den Daten, die Sie auf der Durchreise sind die DB. Zeigen Sie uns, was Sie versuchen, zu bestehen, weil einige Informationen fehlen, wahrscheinlich in Bezug auf UploadedFile.
- Hinzugefügt Person des UploadFiles
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jemand anderen zu stolpern auf diesem - es hat zu tun mit den Daten, die Sie versuchen zu legen - für mich war es der Versuch eine Zeichenfolge einfügen, die länger war, als die Größe festlegen, in der Hibernate annotations. Beim Debuggen, können Sie die Ursache der Ausnahme zu finden, die Ursache.