hibernate - 数据截断:第 1 行的“内容”列的数据太长
问题描述
*引起:com.mysql.jdbc.MysqlDataTruncation:数据截断:第 1 行的列“内容”的数据太长
我试图解决这个问题很多天
姓名:vivek srivastava
描述:联系人
文件:文件 内容类型
:应用程序/pdf
服务:托管,共同定位
休眠:插入文档(地址、联系人、内容、手机号、姓名、名称、服务提供、状态、上传日期)值(? , ?, ?, ?, ?, ?, ?, ?, ?) org.hibernate.exception.DataException:无法插入:[com.ams.bean.Document]
package com.ams.bean;
import java.sql.Blob;
import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
@Entity
@Table(name="documents")
public class Document {
@Id
@GeneratedValue
@Column(name="id")
private Integer id;
@Column(name="name")
private String name;
@Column(name="poname")
private String poname;
@Column(name="mobileno")
private String mobileno;
@Column(name="contact")
private String contact;
@Column(name="content")
@Lob
private Blob content;
@Column(name="serviceprovided")
private String serviceprovided;
@Column(name="status")
private String status;
@Column(name="uploaddate")
private String uploaddate;
@Column(name="address")
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobileno() {
return mobileno;
}
public void setMobileno(String mobileno) {
this.mobileno = mobileno;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
public Blob getContent() {
return content;
}
public void setContent(Blob content) {
this.content = content;
}
public String getServiceprovided() {
return serviceprovided;
}
public void setServiceprovided(String serviceprovided) {
this.serviceprovided = serviceprovided;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getUploaddate() {
return uploaddate;
}
public void setUploaddate(String uploaddate) {
this.uploaddate = uploaddate;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPoname() {
return poname;
}
public void setPoname(String poname) {
this.poname = poname;
}enter code here
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(
@ModelAttribute("document") Document document,
@RequestParam("file") MultipartFile file) {
System.out.println("Name:" + document.getName());
System.out.println("Desc:" + document.getContact());
System.out.println("File:" + file.getName());
System.out.println("ContentType:" + file.getContentType());
System.out.println("service:"+document.getServiceprovided());
try {
Blob blob = Hibernate.createBlob(file.getInputStream());
document.setServiceprovided(document.getServiceprovided());
document.setContent(blob);
document.setAddress(document.getAddress());
document.setName(document.getName());
document.setPoname(document.getPoname());
document.setMobileno(document.getMobileno());
document.setStatus(document.getStatus());
document.setUploaddate(document.getUploaddate());
document.setContact(document.getContact());
} catch (IOException e) {
e.printStackTrace();
}
try {
VMDao.save(document);
} catch(Exception e) {
e.printStackTrace();
}
return "redirect:/customer_details.do";
}
@Transactional(propagation=Propagation.REQUIRED)
public void save(Document document) {
Session session = sessionFactory.getCurrentSession();
session.save(document);
}
解决方案
异常很明显,内容 ID 的值太大(超过 64Kb)。考虑使用另一个,例如 MEDIUMBLOB 或 LONGBLOB:
BLOB 类型 对象类型 对象可以保存的值长度 TINYBLOB 从 0 到 255 字节 BLOB 从 0 到 65535 字节 MEDIUMBLOB 从 0 到 16 777 215 字节 LONGBLOB 从 0 到 4 294 967 295 字节
推荐阅读
- css - 在 React 中使用 Less + CSS Modules 切换主题
- python - 根据 pandas 中的特定子字符串或模式拆分字符串
- python - 如果单词小于 X,则在列表理解中进行词形还原
- c# - 如何在单个 Azure Function App 中使用两种不同的身份验证?
- function - 是否可以委托方法实现
- javascript - 在线共享点中的批处理休息调用
- swift - Firebase 注册 - 在 DB 中存储其他数据会阻止侦听器
- javascript - NextJS:从缓存加载的图像不会触发 onLoad 事件
- android - firebase android应用程序中的端到端加密
- reactjs - react native 中的 webpack 问题 - “插件/预设文件不允许导出对象,只能导出函数。”