O.K*_*Kuz 2 java spring hibernate file-upload
我是Spring和Hibernate的新手,我正在开发电子商务管理系统,我的麻烦在于使用Hibernate将文件上传到DB中.我有一些服务,但我发现它不起作用.
这是我的代码
域
@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;
}
}  
Run Code Online (Sandbox Code Playgroud)
dao layer我在哪里保存对象,其字段是Setof 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();
}
}
Run Code Online (Sandbox Code Playgroud)
至少是控制器
@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";
}
}
Run Code Online (Sandbox Code Playgroud)
当我在JSP页面上提交输入数据时,我处理下一个错误
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
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
    Geo*_*sch 10
对于其他任何绊脚石的人 - 它与您试图插入的数据有关 - 对我而言,它试图插入一个比Hibernate注释中设置的大小更长的String.在调试中,您可以按照异常的原因查找根本原因.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           13154 次  |  
        
|   最近记录:  |