Java org.hibernate.exception.DataException:无法执行语句

Java org.hibernate.exception.DataException:无法执行语句,java,spring,hibernate,file-upload,Java,Spring,Hibernate,File Upload,我是春天和Hibernate的新手,我正在开发电子商务管理系统,我的问题是用Hibernate将文件上传到数据库中。我有一些服务,但我发现它不起作用 这是我的密码 领域 @Entity @Table(name = "DEPUTES_APPEAL") public class DeputesAppeal implements Serializable { @Id @Column(name = "ID") @GeneratedValue private long id; @Column(name

我是春天和Hibernate的新手,我正在开发电子商务管理系统,我的问题是用Hibernate将文件上传到数据库中。我有一些服务,但我发现它不起作用

这是我的密码

领域

@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;
}
}  
上载文件的域

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();
}


}
@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;
}

对于其他在这个问题上遇到障碍的人来说——这与您试图插入的数据有关——对于我来说,这是试图插入一个比Hibernate注释中设置的长度更长的字符串。在调试过程中,您可以按照异常的原因查找根本原因。

我之所以出现此错误,是因为我在varchar中保存了太多数据。我将其更改为键入文本,并将字符限制增加到65535。

由于数据库表中的字段长度不足,我出现了此错误。

您的问题在于要传递到数据库的数据中。向我们展示您试图持久化的内容,因为缺少一些信息,很可能是关于UploadedFile.added UploadedFiles实体的信息
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
@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;
}